Guten Abend,
Hallo erstmal, ich habe hier schon viel gelesen und mich auf grund eines Problems dazu entschlossen mich hier endlichmal anzumelden
Jetzt aber mal zu meinen Problem, ich möchte in einem Verzeichnis (und dessen Unterverzeichniss) eine bestimmte datei suchen (nennen wir sie mal "12345.txt"), diese Datei existiert warscheinlich nur einmal, möglicher weiße aber auch öfters.
Darfür habe ich von "
Tino" eine tolle Prozedur gefunden:
Delphi-Quellcode:
Procedure FindFiles (aPath, aFindMask:
String; aWithSub: Boolean; aResult: tStrings);
Var
FindRec: tSearchRec;
Begin
// Wenn die Stringliste nil ist oder aPath oder aFind nicht angegeben ist
// dann raus
If (aPath = '
')
or (aFindMask = '
')
or Not Assigned (aResult)
Then
Exit;
// Wenn am Ende der Pfadangabe noch kein \ steht, dieses hinzufügen
// (Oder die Funktion IncludeTrailingPathDelimiter aus der Unit SysUtils.pas verwenden)
If aPath[Length (aPath)] <> '
\'
Then
aPath := aPath + '
\';
// Im aktuellen Verzeichnis nach der Datei suchen
If FindFirst (aPath + aFindMask, faAnyFile, FindRec) = 0
Then
Repeat
If (FindRec.
Name <> '
.')
and (FindRec.
Name <> '
..')
Then
// ...Ergebnis in die Stringlist einfügen
aResult.Add (aPath + FindRec.
Name);
Until FindNext (FindRec) <> 0;
FindClose (FindRec);
// Wenn nicht in Unterverzeichnissen gesucht werden soll dann raus
If Not aWithSub
Then
Exit;
// In Unterverzeichnissen weiter suchen
If FindFirst (aPath + '
*.*', faAnyFile, FindRec) = 0
Then
Repeat
If (FindRec.
Name <> '
.')
and (FindRec.
Name <> '
..')
Then
// Feststellen, ob es sich um ein Verzeichnis handelt
If Boolean (FindRec.Attr
and faDirectory)
Then
// Funktion erneut aufrufen, um Verzeichnis zu durchsuchen (Rekursion)
FindFiles (aPath + FindRec.
Name, aFindMask, aWithSub, aResult);
Until FindNext (FindRec) <> 0;
FindClose (FindRec);
End;
FindFiles ('c:\windows', '*.txt', True, ListBox1.Items);
Mein Problem dabei ist allerdings das ich keine ListBox verwenden kann, da ich eine Konsolen Applikation Programmiere. Also muss ich auf TStrings oder TStringList zurückgreifen. Hier beginnt allerdings das Problem:
Delphi-Quellcode:
...
var
Strings: TStrings;
...
begin
Strings := TStrings.Create;
FindFiles('C:\...\...\folder', '12345.txt', True, Strings);
end.
...
liefert mit jediglich (D2010) "
Exception EAbstractError in Modul Project1.exe bei 00015F9F. Abstrakter Fehler.", diverste Parameter für Strings (Strings.XXX) habe ich schon ausprobiert, entweder funktionieren sie nicht oder ich habe nur nicht den richtigen gefunden ..
Vielen Dank,
tbird