Entwickler-Ecke
Dateizugriff - Dateien finden
areuter - So 20.03.05 14:22
Titel: Dateien finden
hallo.
irgendwie komme ich hier mit diesen ganzen threads und der delphi-hilfe nicht zurecht.
kann mir bitte jemand helfen.
wie kann ich ein verzeichnis auslesen und die dateien finden? ist das wirklich so schwer? ich möchte eigentlich nur den namen einer datei (*.db) aus einem verzeichnis (c:\test) herausfinden und diesen als z.b. label1.caption anzeigen lassen. muss ich irgendetwas in der uses deklarieren?
vielen dank im voraus für die hilfe!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var Srec: TSearchRec; found: integer; begin found:= findfirst(???); while found=0 do begin label1.caption:= found:=findnext(Srec); end; findclose(Srec); |
Diabele$ - So 20.03.05 14:26
Hatte ich auch gerade nachgeschaut:
http://www.delphi-forum.de/viewtopic.php?t=1107
Bloß funzt das mit den Unterverzeichnissen nicht so richtig:
Ich gebe bei aWithSub true ein, aber er listet mir trotzdem nur die Dateien aus dem Standardpfad (also aPath) auf, obwohl ich weiß, dass in den Unterverzeichnissen auch Dateien liegen, die dem Filter entsprechen. :(
Oder liegt das an mir :?: :?: :?:
mirage228 - So 20.03.05 14:32
Hi,
versuchs mal mit dem Code, der funktioniert auf jeden Fall:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure FileList(const APath, AExt: string; ARecurse: Boolean; AList: TStrings); var F : TSearchRec; Path : string; begin Path := IncludeTrailingPathDelimiter(APath); if (ARecurse) and (FindFirst(Path + '*.*', faAnyFile, F) = 0) then try repeat if (F.Name <> '.') and (F.Name <> '..') and ((F.Attr and faDirectory) = faDirectory) then FileList(Path + F.Name, AExt, ARecurse, AList); until FindNext(F) <> 0; finally FindClose(F); end; if FindFirst(Path + AExt, faAnyFile, F) = 0 then try repeat if (F.Name <> '.') and (F.Name <> '..') and ((F.Attr and faDirectory) <> faDirectory) then AList.Add(Path + F.Name); until FindNext(F) <> 0; finally FindClose(F); end; end; |
Bei dem Code aus Deinem Link scheint es, als ob nur in Unterverzeichnissen weitergesucht, falls im ersten Verzeichnis etwas gefunden wurde. Habe mir den Code aber nicht näher angeschaut...
mfG
mirage228
areuter - So 20.03.05 14:34
vielen dank für die super schnelle antwort!
werde es gleich mal ausprobieren.
gruss und noch einen schönen sonntag
arne
Diabele$ - So 20.03.05 14:44
Ja, bei dem Code funktioniert's perfekt :wink:
areuter - So 20.03.05 15:05
für alle, die eine kleine einfach routine haben möchten:
sucht nach einer .exe und zeigt diese als label an.
grüsse arne
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); Var FindRec: tSearchRec; Begin If FindFirst ('c:\verzeichnis\' + '*.exe', faAnyFile, FindRec) = 0 Then Repeat If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then label1.caption:=FindRec.Name; Until FindNext (FindRec) <> 0;
FindClose (FindRec);
end; end. |
mimi - So 20.03.05 16:15
ich habe herrausgefunden das es besser ist:
FindFirst ('c:\verzeichnis\' + '*.exe'+#0 zu machen, warum weiß ich nicht, aber so funktioniert es aufjedenfall...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!