![]() |
Ordner in einer Listbox auflisten
Ich habe ein kleines Problem ...
Wie kann man Ordner die sich in einem anderen Ordner befinden in einer Listbox auflisten. Beispiel: Der Ordner heißt c:\test in diesem Ordner befinden sich weitere Ordner: 1 2 3 ... Jetzt müsste die Listbox so ausschauen: 1 2 3 Ich hoffe ihr versteht was ich meine und hoffentlich kann mir wer helfen. |
Re: Ordner in einer Listbox auflisten
Einfach den Code von
![]() Nachtrag: Schnell hingetippt (nicht sehr performant):
Delphi-Quellcode:
function TForm1.IsInListBox(FileName: string): boolean;
var i: integer; begin result := false; for i := 0 to ListBox1.Items.Count - 1 do begin if ListBox1.Items[i] = FileName then begin result := true; break; end; end; end; procedure TForm1.FindAllFolders(RootFolder: string; Recurse: Boolean = True); var SR: TSearchRec; begin if AnsiLastChar(RootFolder)^ <> '\' then RootFolder := RootFolder + '\'; if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory = faDirectory then if (SR.Name <> '.') and (SR.Name <> '..') then begin FindAllFolders(RootFolder + SR.Name, Recurse); if not IsInListBox(RootFolder) then begin ListBox1.Items.Add(RootFolder); Application.ProcessMessages; end; end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; procedure TForm1.Button1Click(Sender: TObject); begin FindAllFolders('c:\'); end; |
Re: Ordner in einer Listbox auflisten
Danke schon mal
aber da sind zwei Sachen die ich nicht so gut gebrauchen kann 1. Er listet auch die Unterordner auf. Ich brauch blos die die in dem Verzeichniss sind das ich ausgewählt habe. 2. ich brach nur den letzten Ordnername one das C:\... davor Ist das möglich? Währe echt wichtig |
Re: Ordner in einer Listbox auflisten
dann bau das doch um. Die unterordner vermeidest du indem du die rekursion verhinderst und den puren ordnernamen ohne pfad davor bekommst du direkt vom TSearchRec...
Die Infos sind absichtlich so sperlich da ich den eindruck habe das du den source nicht verstanden hast und du somit nicht wirklich programmierst sondern einfach dein Programm aus bausteinen anderer zusammensetzt ohne diese zu verstehen. Auf diese Art und weise hoff ich das du versuchst den source zu verstehen und somit irgendwann auch besser wirst... (in sachen programmieren) |
Re: Ordner in einer Listbox auflisten
@ SirThornberry
hast ja vollkommen recht kannst du mir den Quelltext mal erklären?? |
Re: Ordner in einer Listbox auflisten
@Matze
was passiert, wenn ich als Pfas z.B. "ordner/" mache? dann baut das script ja fälschlicherweise in "ordner/\" um. air |
Re: Ordner in einer Listbox auflisten
Delphi-Quellcode:
Wenn du jetzt nur den Ordnernamen anzeigen lassen möchtest, dann schreibe nur 'StringList.Add(SR.Name);' wie es SirThornberry schon vorgeschlagen hatte.
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; @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. |
Re: Ordner in einer Listbox auflisten
Vielen Dank
|
Re: Ordner in einer Listbox auflisten
@Nogge
nein, das mein ich nicht. die funktion erwartet doch als ordner entweder etwas a la "ordner" oder "ordner\" wobei das backslash automatisch geaddet wird, wenn es fehlt. aber es gibt leute, die geben als pfad "ordner/" an, wobei der ordner natürlich nur "ordner" heißt air |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz