Delphi-Quellcode:
Procedure FindDirs(DirPath:
String; StringList:TStrings; Recurse: Boolean = false);
var SR:TSearchRec;
begin
if AnsiLastChar(DirPath)^ <> '
\'
then DirPath:=DirPath + '
\';
try
{ im angegebenen Verzeichniss nach Unterordnern suchen -- }
if FindFirst(DirPath+'
*.*',faDirectory,SR)=0
then
repeat
{ wenn SR ein Ordner ist und nicht '.' und '..' heißt, dann... }
if ((SR.Attr
and faDirectory)<>0)
and (SR.
Name <> '
.')
and (SR.
Name <> '
..')
then
begin
{ ...füge den Ordner der StringList (z.B. einer Listbox(.Items)) hinzu }
StringList.Add(DirPath+SR.
Name+'
\');
// s.u. Erläuterung
{ wenn Recurse = true, dann durchsuche den aktuellen Ordner (SR.Name) nach Unterordnern }
if Recurse
then FindDirs(DirPath+SR.
Name,StringList,true);
end;
until FindNext(SR) <> 0;
// wenn keine Unterordner mehr gefunden wurden, Suche beenden
finally
FindClose(SR);
// Search Handle schließen, da es nicht mehr gebraucht wird
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FindDirs('
c:',listbox1.Items);
end;
Wenn du jetzt nur den Ordnernamen anzeigen lassen möchtest, dann schreibe nur 'StringList.Add(SR.Name);' wie es SirThornberry schon vorgeschlagen hatte.
@Airblader: Du hast ja recht mit deiner Vermutung, aber wieso sollte das Verzeichnis so heißen? Das wäre dann ja nur ein Schreibfehler vom Programmierer, denn bei Windows ist es unmöglich, ein Verzeichnis so zu benennen.