Autor Beitrag
TheHuette
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 221

Windows XP Home
Delphi 7 PE, Delphi 2005 PE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Do 06.10.05 09:59 
Oder suche hier im Forum mal nach Suche in: Delphi-Forum, Delphi-Library 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 107

Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
BeitragVerfasst: 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*

ausblenden 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 user profile iconraziel: Code- durch Delphi-Tags ersetzt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 06.10.05 10:26 
Moin!

Und leider ist es eine mit Fehlern... :roll:

Das FindClose() gehört nicht in den if-Block rein, das habe ich damals schon dem Autor gesagt... :wink:

cu
Narses
Grishnak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 221

Windows XP Home
Delphi 7 PE, Delphi 2005 PE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 107

Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
BeitragVerfasst: Do 06.10.05 10:37 
funktioniert aber trotzdem gut :P

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 221

Windows XP Home
Delphi 7 PE, Delphi 2005 PE
BeitragVerfasst: Do 06.10.05 10:52 
Oops! Meine bemerkung zu dem TSearchRecord ist natürlich Quatsch :? ! Da hatte ich was verwechselt :roll: ! Jaja, der TSearchRecord wird von 'FindFirst' bzw 'FindNext' mit Daten gefüllt :wink: !

_________________
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Do 06.10.05 10:56 
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 06.10.05 11:02 
Moin!

user profile iconPepe 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