![]() |
Unterordner eines Ordners suchen
Ich habe ein problem, und zwar will ich ein programm schreiben, dass mir alle UNTERORDNER (und auch deren) anzeigt.
Ich möchte darauf hinweisen, dass ich sehr wohl die forumsuche und google dazu genutzt habe entsprechende beispiele zu finden, bisher jedoch ohne erfolg. Prinzipiell wurde dann immer auf "dateien in unterordnern suchen" verwiesen, aber das will ich ja nicht. Ich bräuchte ein beispiel, wie man sich nur die unterordner(und deren) eines ordners in einer listbox ausgeben lassen kann. |
Re: Unterordner eines Ordners suchen
Du kannst mir nicht erzählen, dass dir die Suche nicht
![]() ![]() |
Re: Unterordner eines Ordners suchen
Man muss sich ja nicht mit FindFirst / FindNext rumschlagen. In der Codelib sind ja auch Beiträge zum suchen von Dateien, die dann einfach ein bisschen umschreiben... :wink:
Delphi-Quellcode:
Aufruf:
procedure GetFilesInDirectory(Directory: String; const Mask: String;
List: TStrings; WithSubDirs, ClearList: Boolean); procedure ScanDir(const Directory: String); var SR: TSearchRec; Dir : string; begin if FindFirst(Directory + Mask, faAnyFile, SR) = 0 then try repeat Application.ProcessMessages; IF (Dir <> Directory) THEN begin List.Add(Directory); Dir := Directory; end; until FindNext(SR) <> 0; finally FindClose(SR); end; if WithSubDirs then begin if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try repeat Application.ProcessMessages; if ((SR.attr and faDirectory) = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then ScanDir(Directory + SR.Name + '\'); until FindNext(SR) <> 0; finally FindClose(SR); end; end; end; begin List.BeginUpdate; try if ClearList then List.Clear; if Directory = '' then Exit; if Directory[Length(Directory)] <> '\' then Directory := Directory + '\'; ScanDir(Directory); finally List.EndUpdate; end; end;
Delphi-Quellcode:
Natürlich ist die Methode etwas zeitintensiv....
GetFilesInDirectory('C:\', '*.*', ListBox1.Items, True, True);
Edit1: Application.ProcessMessages... :oops: |
Re: Unterordner eines Ordners suchen
Wenn alle Stricke reißen - die DirectoryListBox aus der Palette "Win 3.1" kann vielleicht schon alles, was du willst.
Grüße vom marabu |
Re: Unterordner eines Ordners suchen
Sicher kenne ich findfirst ich habe auch schon versucht eine function hier im forum umzubasteln (durch ändern von faanyfile, in fadirectory) hat jedoch nicht den gewünschten effekt erbracht. Hat mir trotzdem noch dateien angezeigt.
Zur directorylistbox: die verwende ich monentan, nur es haben sich einige probleme damit ergeben, deswegen suche ich einen anderen weg |
Re: Unterordner eines Ordners suchen
Zitat:
|
Re: Unterordner eines Ordners suchen
Ich verstehe nicht ganz was du meinst, bzw damit bezweckst ...
|
Re: Unterordner eines Ordners suchen
Hier das ganze in Grün - aber mit TreeView zur Visualisierung:
Delphi-Quellcode:
marabu
procedure AllFolders(root: string; nodes: TTreeNodes; tnParent: TTreeNode);
var sr: TSearchRec; tn: TTreeNode; begin root := IncludeTrailingPathDelimiter(root); if FindFirst(root + '*.*', faAnyFile, sr) = 0 then try repeat Application.ProcessMessages; if (sr.Name <> '.') and (sr.Name <> '..') and ((sr.Attr and faDirectory) = faDirectory) then begin tn := nodes.AddChild(tnParent, sr.Name); AllFolders(root + sr.Name, nodes, tn); end else Continue; until FindNext(sr) <> 0; finally FindClose(sr); end; end; procedure TDemoForm.ListButtonClick(Sender: TObject); begin with TreeView do begin Items.Clear; Items.BeginUpdate; AllFolders('C:\DATEN', Items, nil); Items.EndUpdate; end; end; |
Re: Unterordner eines Ordners suchen
Ich danke, habe es auf eine listbox umgeschrieben und es funktioniert ...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 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