| Autor |
Beitrag |
TheHuette
      
Beiträge: 81
|
Verfasst: Do 06.10.05 09:44
Hi!
Hab noch nicht viel mit der Windows-API zu tun gehabt und leider gerade nicht genug Zeit, um mich lange mit dem Problem zu beschäftigen. Hoffe jemand hat nen Tip, weil's eigentlich nicht so kompliziert sein sollte:
Ich möchte ganz einfach eine StringList mit den Namen der Unterordner eines bestimmten Verzeichnisses füllen und diese dann in einer Combobox anzeigen.
Weiss nich so recht, wie ich die Ordner auslesen kann. Wahrscheinlich über TDirectory?
Hab Probleme mit der Such-Funktion dieses Forums. Hoffe es wurde noch nicht zu oft besprochen.
|
|
Grishnak
      
Beiträge: 221
Windows XP Home
Delphi 7 PE, Delphi 2005 PE
|
Verfasst: Do 06.10.05 09:54
Vielleicht kommst du mit 'FindFirst()', 'FindNext()', 'FindClose()' und 'TSearchRec' weiter!
_________________ Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Do 06.10.05 09:59
Oder suche hier im Forum mal nach SEARCHTOOL und schreibe die ein bissl um. Wo er Dateien ausliest dürfte ja Klar zu erkennen sein und wo er Ordner gefunden hat. Dann nimmste den Teil des dateienfindens raus und schreibst bei der Ordnererkennung noch das hinzufügen des Ordners in deine ComboBox hin.
|
|
Pepe
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: Do 06.10.05 10:23
hoi,
ich weiß leider nicht mehr, von wem die Funktion ist, Sie ist aufjedenfall hier aus dem Forum *gg*
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:
| procedure GetFilesInDirectory(ADirectory: string; AMask: String; AList: TStrings; ARekursiv: Boolean); var SR: TSearchRec; begin if (ADirectory<>'') and (ADirectory[length(ADirectory)]<>'\') then ADirectory:=ADirectory+'\';
if (FindFirst(ADirectory+AMask,faAnyFile-faDirectory,SR)=0) then begin repeat if (SR.Name<>'.') and (SR.Name<>'..') and (SR.Attr<>faDirectory) then AList.Add(ADirectory+SR.Name) until FindNext(SR)<>0; FindClose(SR); end;
if ARekursiv then if (FindFirst(ADirectory+'*.*',faDirectory,SR)=0) then begin repeat if (SR.Name<>'.') and (SR.Name<>'..') then GetFilesInDirectory(ADirectory+SR.Name,AMask,AList,True); until FindNext(SR)<>0; FindClose(SR); end; end; |
musste halt auch nen bissel umschreiben, so das er nur die ordner ausspuckt...
Moderiert von raziel: Code- durch Delphi-Tags ersetzt
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 06.10.05 10:26
Moin!
Und leider ist es eine mit Fehlern...
Das FindClose() gehört nicht in den if-Block rein, das habe ich damals schon dem Autor gesagt...
cu
Narses
|
|
Grishnak
      
Beiträge: 221
Windows XP Home
Delphi 7 PE, Delphi 2005 PE
|
Verfasst: Do 06.10.05 10:29
In Zeile 3 wird 'SR' als 'TSearchRec' deklariert und in Zeile 9 in der Funktion 'FindFirst' benutzt. Man sollte das Ding zwischenzeitlich auch mit Daten "füttern"!
_________________ Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
|
|
Pepe
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: Do 06.10.05 10:37
funktioniert aber trotzdem gut
wir SR denn nicht, wenn ich das jetzt nicht falsch verstanden habe von FindFirst mit daten versorgt?
mit dem FindClose habter allerdings recht! is ziemlich blöd, wenn der if block false ist und keine close mehr kommt *gg*
|
|
Grishnak
      
Beiträge: 221
Windows XP Home
Delphi 7 PE, Delphi 2005 PE
|
Verfasst: Do 06.10.05 10:52
Oops! Meine bemerkung zu dem TSearchRecord ist natürlich Quatsch  ! Da hatte ich was verwechselt  ! Jaja, der TSearchRecord wird von 'FindFirst' bzw 'FindNext' mit Daten gefüllt  !
_________________ Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Do 06.10.05 10:56
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 06.10.05 11:02
Moin!
Pepe hat folgendes geschrieben: | | funktioniert aber trotzdem gut |
Nein, tut es nicht, wie du aus dem Original-Thread hättest sehen können. Deshalb möchte ich dich bitten, in Zukunft besser Links zu den Threads zu posten, anstatt den Code hier auch noch zu vervielfachen...
cu
Narses
|
|