Autor |
Beitrag |
Xanatos Nevelainen
Hält's aus hier
Beiträge: 12
WIN XP HOME SP2; Delphi 07
|
Verfasst: Di 01.07.08 22:57
Yub Yub da bin ich mal wieder !!
Ich möchte ein Programm schreiben, das mir alle Dateien in einem bestimmten Ordner auf listet, die eine bestimmte Endung haben (z.B. ".dds")
Geht das mit der Delphi integrierten Suchefkt ?? Da muss man ja Position angeben, oder die wird einem angegeben... ???
Und ausserdem fkt das ja nur bei Texten. Ich will aber Ordner durchsuchen lassen.
Zusammengefasst:
Man gibt einen Ordner an, und eine Dateiendung. Dann bekommt man anschliessend alle Dateien mit Pfad und Namen aufgelistet.
??? Kennt jemand so ein Programm, oder weiss jemand wie sowas geht ???
vielen Dank und liebe Grüsse, XN Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Di 01.07.2008 um 23:04
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 01.07.08 23:05
Moin!
DRIVETOOLS
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Di 01.07.08 23:17
so sollte das gehen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var Found: Integer; SearchRec: TSearchRec; begin Found := FindFirst(Path+'\*.*', faDirectory, SearchRec); while Found = 0 do begin if ExtractFileExt(SearchRec.Name) = '.XXX' then begin end; Found := FindNext(SearchRec); end; FindClose(SearchRec); end; |
MfG Bergmann.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Di 01.07.08 23:28
Du könntest die Dateiendung auch gleich als Suchkriterium einbinden:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var Found: Integer; SearchRec: TSearchRec; begin Found := FindFirst(Path+'\*.xxx', faDirectory, SearchRec); if SearchRec <> 0 then try while Found = 0 do begin Found := FindNext(SearchRec); end; finally FindClose(SearchRec); end; end; |
|
|
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Di 01.07.08 23:34
ja ich weiß, aber da gabs bei mir immer probleme und der hat die Datein dann nie gefunden, deshalb hab ich das so gelöst...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 02.07.08 09:18
Dann hast du etwas falsch gemacht.
|
|
Xanatos Nevelainen 
Hält's aus hier
Beiträge: 12
WIN XP HOME SP2; Delphi 07
|
Verfasst: Mi 02.07.08 22:19
Also mit dem Tool von Bergmann89 funzt es einwandfrei
Aber wie kann ich auch gleich noch eventuelle Unterordner mit durchsuchen lassen ??
Auch diese Dateien sollen dann mit dem Pfad angegeben werden ! (In nem Memo)
Und wie geht das eigentlich, dass ich mir einen Pfad auswählen kann, z.B. wie beim Extrahieren mit 7z ??
Danke für die schnelle Hilfe !!!
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 02.07.08 22:45
Moin!
Xanatos Nevelainen hat folgendes geschrieben: | Aber wie kann ich auch gleich noch eventuelle Unterordner mit durchsuchen lassen ??
Auch diese Dateien sollen dann mit dem Pfad angegeben werden ! (In nem Memo) |
Xanatos Nevelainen hat folgendes geschrieben: | Und wie geht das eigentlich, dass ich mir einen Pfad auswählen kann, z.B. wie beim Extrahieren mit 7z ?? |
Bitte nur eine Frage pro Thread, sonst müssen wir das Topic schließen!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mi 02.07.08 23:21
Hi,
das geht damit:
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 TForm1.FindDir(Path, Datei: String); var Found,i,j: Integer; SearchRec: TSearchRec; DirList,FileList: TStringList; begin DirList := TStringList.Create; FileList := TStringList.Create; Found := FindFirst(Path+'\*.*', faDirectory, SearchRec); while Found = 0 do begin if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then begin DirList.Add(Path+'\'+SearchRec.Name); if ExtractFileExt(SearchRec.Name) = Datei then FileList.Add(Path+'\'+SearchRec.Name); end; Found := FindNext(SearchRec); end; FindClose(SearchRec);
if DirList.Count <> 0 then for i := 0 to DirList.Count-1 do FindDir(DirList.Strings[i],Datei);
DirList.Free; FileList.Free; end; |
Damit bekommst du alle Datein des Ordners (+Unterordner). Die sind dann in
der FileList aufgelistet!
MfG Bergmannn.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 02.07.08 23:50
Moin!
Bergmann89 hat folgendes geschrieben: | das geht damit: |
Ich würde von deinem Code abraten  - keine Resourcen-Schutzblöcke für die Listenobjekte
- die implizite Rekursion dürfte wenigstens gewöhnungsbedürftig sein; aber für den Fall, eine Liste aller Dateien in den Unterordnern zu erhalten, schlicht falsch - weil eine (Teil-)Liste jeweils nur in einer Rekursionsebene existiert
Ich weiß nicht was so schwer daran ist, die DriveTools von Luckie mal anzusehen...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Fabian E.
      
Beiträge: 554
Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
|
Verfasst: Do 03.07.08 03:36
Du könntest auch Heiko's Unit SearchTool.pas nehmen. Die lässt sich wirklich sehr einfach bedienen und ist auch sehr schnell. Hat glaube ich sogar was mit den DriveTools zu tun.
Du findest sie hier.
|
|
Xanatos Nevelainen 
Hält's aus hier
Beiträge: 12
WIN XP HOME SP2; Delphi 07
|
Verfasst: Do 03.07.08 11:01
Yub Yub
DANKE Fabian, für diesen tollen Hinweis !!! Das Proggy von Heiko funktioniert so wie ich mir das vorgestellt hatte !!!
Ich musste es zwar noch ein bissl umschreiben, damit die Ergebnisse in nem Memo ausgegeben werden, aber das ist ja relativ einfach.
Danke Fabian,
Danke Heiko !
lg, XN
_________________ Wer für den Strick geboren ist, kann im Wasser nicht umkommen.
|
|
Wolle92
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Do 03.07.08 12:57
son progg steht auch von mir im open source...
ich erdreiste mich mal, das zu verlinken...
www.delphi-forum.de/...hprogramm_73739.html
funktioniert genau so wie du das willst...
es durchsucht zwar auch unterverzeichnise aber das kannst du ganz einfach änden...
machst du ne checkbox "Unterverzeichnise mit durchsuchen" aufs formular und dann änderst du folgende code-stelle:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.SucheDir1(search: String; pfad: String); ... if ((sr.Attr and faDirectory) <> 0) then SucheDir1(search, pfad + '\' + sr.name) else ... end; |
so um:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.SucheDir1(search: String; pfad: String); ... if ((sr.Attr and faDirectory) <> 0) and (CheckBox1.Checked) then SucheDir1(search, pfad + '\' + sr.name) else ... end; |
Tschuldingung, falls ich jetzt nen bisschen dreist war 
_________________ 1405006117752879898543142606244511569936384000000000.
|
|
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Do 03.07.08 13:23
@Narses: Ja, hast Recht...
ich hab den Code gestern schnell zusammengeschustert, da is mir wohl einiges dabei entgangen
MfG Bergmann.
|
|