![]() |
Alle Ordner eines Verzeichnises in einer Listbox auflisten
Hallo,
ich möchte einfach in einer Listbox alle Ordner die im Verzeichnis C:/xyz/bbb stehen auflisten..... Habe leider nur etwas ähnliches mit dem Treeview gefunden: ![]() Habt Ihr da eine Idee? Danke Für die Hilfe! Gruß Andy |
Re: Alle Ordner eines Verzeichnises in einer Listbox auflist
Schau mal in der OH nach FindFirst, Findnext,
da findest Du schon alles was Du brauchst. Moin |
Re: Alle Ordner eines Verzeichnises in einer Listbox auflist
Hallo,
danke für deine Antwort. Also ich habe schon was gefunden, aber das listet ja nur Dateien auf :-( ![]() Wie mache ich dann das ganze mit Ordnern? Danke! |
Re: Alle Ordner eines Verzeichnises in einer Listbox auflist
Delphi-Quellcode:
...if LSearchRec.Attr and faDirectory = 1 then ...
|
Re: Alle Ordner eines Verzeichnises in einer Listbox auflist
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe mir vor kurzen eine kleine Komponente erstellt, mit welcher man genau das hinbekommen sollte :-) Leider habe ich sie (noch) nicht kommentiert, vielleicht wirst Du ja aus dem Source schlau... Schnellanleitung der Grundfunktion: 1.) Komponente installieren und auf Form platzieren 2.) Einstellungen im OI vornehmen (Für "nur" Verzeichniss sollte es folgendermaßen aussehen: faAnyFile = true, faDirsOnly = true. 3.) Untervereichnisse einschliessen? -> im OI aktivieren Aufruf:
Delphi-Quellcode:
Ist evtl. mit Kanonen auf Spatzen geschossen, aber Du kannst Dir ja mal die Kernroutine anschauen und entsprechen anpassen.
Listbox1.Items := AdvFileSearch1.SearchToList;
Vielleicht hilft es Dir ja weiter... SCRaT |
Re: Alle Ordner eines Verzeichnises in einer Listbox auflist
Hallo,
also ich habs jetzt mal so probiert:
Delphi-Quellcode:
Aber leider funktioniert das nicht :-(function ListFiles(Box : TListbox) : Boolean; var LStrList: TStringlist; LPfad: String; LSearchRec: TSearchRec; begin LPfad := 'C:/'; Box.Items.Clear; LStrList := TStringlist.Create; if FindFirst(LPfad + '*.*', faAnyFile, LSearchRec) = 0 then begin repeat if LSearchRec.Attr and faDirectory = 1 then begin Box.Items.Add(LSearchRec.Name); end; until FindNext(LSearchRec) <> 0; FindClose(LSearchRec); end; LStrList.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin ListFiles(Listbox1); end; Danke für Eure Hilfe! |
Re: Alle Ordner eines Verzeichnises in einer Listbox auflist
Hallo!
ich habe diesen Code-Schnipsel gefunden:
Delphi-Quellcode:
var VerzListe : TStringList;
function VerzGroesse(Verzeichnis:string):longint; var SR : TSearchRec; Groesse : longint; begin Groesse:=0; if Verzeichnis[length(Verzeichnis)]<>'\' then Verzeichnis:=Verzeichnis+'\'; if FindFirst(Verzeichnis+'*.*',$3F,SR)=0 then begin repeat if ((SR.Attr and faDirectory)>0) and (SR.Name<>'.') and (SR.Name<>'..') then Groesse:=Groesse+VerzGroesse(Verzeichnis+SR.Name) else Groesse:=Groesse+SR.Size; if (SR.Name<>'.') and (SR.Name<>'..') then VerzListe.Add(Verzeichnis+SR.Name); until FindNext(SR)<>0; FindClose(SR); end; Result:=Groesse; end; procedure TForm1.Button1Click(Sender: TObject); begin VerzListe:=TStringList.Create; Label1.Caption:=IntToStr(VerzGroesse('C:\Programme'))+' Byte'; ListBox1.Items.Assign(VerzListe); VerzListe.Free; end; Es rechnet nebenbei noch die Größe aller eingelesenen Verzeichnisse ein; kannst du ja nach Deinen Wünschen anpassen... Gruß Pfoto |
Re: Alle Ordner eines Verzeichnises in einer Listbox auflist
Zitat:
Delphi-Quellcode:
Aufruf:
function ListFiles : TStringList; // Rückgabewert
var LStrList: TStringlist; LPfad: String; LSearchRec: TSearchRec; begin LPfad := 'C:\'; // NICHT "C:/", weiß nicht, ob es sonst klappen würde LStrList := TStringlist.Create; if FindFirst(LPfad + '*.*', faAnyFile, LSearchRec) = 0 then begin repeat if (LSearchRec.Attr and faDirectory) = 1 then // Klammern gesetzt begin LStrList.Add(LSearchREc.Name); end; until FindNext(LSearchRec) <> 0; FindClose(LSearchRec); end; Result := LStrList; // Ergebnis als StringList zurückgeben LStrList.Free; end;
Delphi-Quellcode:
Ob jetzt Deine eigentliche Suchfunktion korrekt programmiert ist, habe ich gerade leider keine Zeit zu testen. Rekursives Suchen dürfte so aber auf jeden Fall (falls nötig) nicht möglich sein. Evtl. könntest Du noch einen Parameter "function listfiles(dir : string) : TStringList" einbauen, damit man der Funktion noch das Verzeichnis übergeben kann, welches man auflisten möchte...
Listbox1.Items := ListFiles;
Ich hatte mal das ein komisches Verhalten, dass Verzeichniss nur gefunden wurden, wenn man statt "*.*" nur "*" eingegeben hat. Hat sich dann allerdings beim weiteren Programmieren in Luft aufgelöst!?! Evl. auch einen Versuch wert. .. und weil das Editieren soo viel Spass macht: Achte darauf, dass der Pfad, wenn nicht grad "c:\" immer mit einem "\" abgeschlossen wird. Also z.B. "c:\test\" und NICHT "c:\test", sonst pass ja der Ausdruck "LPfad + '*.*'" nicht mehr... Viel Glück :-) SCRaT |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 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 by Thomas Breitkreuz