![]() |
Ordnerinhalte in Listbox auflisten
Moin, nicht hauen wegen dem Titel. Wie man Dateien aus einem Ordner in einer Listbox anzeigt weiss ich nun schon. Ich wusste nur nicht wie ich es beschreiben soll...
Also, mein Problem: Ich habe eine ComboBox die ich über eine Ini-Datei füttere. In der Ini-Datei sind die Einträge für die Combobox und eine Verzeichnisangabe mit diesem Schema: [aaa] Description=Test1 Directory=C:\Test [bbb] Description=Test2 Directory=D:\Hallo In der ComboBox wird nun z.B. Test1 ausgewählt und nun möchte ich mir den Inhalt (evtl. nur bestimmte Formate) in einer Listbox anzeigen lassen. Ich habe schon eine Dateisuche. Ich weiss allerdings nicht wie ich das hinbekomme, das ich nicht mehr in einem festen Verzeichnis suche, sonder in dem Verzeichnis was über die ComboBox ausgewählt wurde. Hoffe die Frage ist einigermaßen Verständlich. :oops: Hier mal der Quelltext den ich zum Durchsuchen nehme:
Delphi-Quellcode:
Hiermit rufe ich bis jetzt die Suche auf. Könnte aber auch gleich eingelesen werden wenn ich auf einen ComboBox-Eintrag klicke.
procedure GetFilesinDirectory(Directory: String; const Mask: String;
List: TStrings; WithSubDirs, ClearList: Boolean); procedure ScanDir(const Directory: String); var SR: TSearchRec; begin if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) = 0 then try repeat List.Add(Directory + SR.Name) until FindNext(SR) <> 0; finally FindClose(SR); end; if WithSubDirs then begin if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try repeat if (SR.Attr = 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:
Für Tipps wäre ich sehr Dankbar!
procedure TForm1.Button2Click(Sender: TObject);
var F: TSearchRec; var I: Integer; begin GetFilesInDirectory('C:\DelphiTestverzeichnis', '*.avi*', ListBox1.Items, True, True); if FindFirst('C:\DelphiTestverzeichnis', faAnyFile, F) = 0 then try Edit1.Text := F.Name; finally FindClose(F) end; mfg black_hawk [edit=alcaeus]code- durch delphi-Tags ersetzt. In Zukunft bitte die richtigen Tags verwenden. Mfg, alcaeus[/edit] |
Re: Ordnerinhalte in Listbox auflisten
Mit
Delphi-Quellcode:
bzw
ComboBox1.Text
Delphi-Quellcode:
wobei ersteres hier einfacher wäre, bekommst du den Text (hier: Pfad), der in der Combobox steht. Nun musst du diesen nur an deine Funktion übergeben.
ComboBox1.ItemIndex
|
Re: Ordnerinhalte in Listbox auflisten
Das ging ja flink! :shock:
Werde ich gleich mal versuchen. Danke! mfg black_hawk |
Re: Ordnerinhalte in Listbox auflisten
Ich hab gerade gesehen, dass ich teilw. Mist geschrieben habe. ALso bei dir steht in der ComboBox natürlich nicht der Pfad, sondern die Section der Ini. Du musst halt bei der Ini Abfrage anstelle der Section ComboBox1.Text übergeben.
|
Re: Ordnerinhalte in Listbox auflisten
Irgendwie bekomme ich das nicht hin. Ich muss dazu sagen das ich noch nicht so lange mit Delphi arbeite. Ich hatte vor beim OnChange-Ereignis der Combobox das passende Verzeichnis zum Eintrag anzeigen zu lassen. So wie ich dich verstanden habe, brauche ich den Such-Code nicht ändern sondern muss nur beim Aufruf die Ini-Infos mit übergeben? Oder bin ich da jetzt komplett auf dem falschen Weg? :?:
Kannst du mir mal bitte ein Beispiel geben? Danke! mfg black_hawk |
Re: Ordnerinhalte in Listbox auflisten
Beim Aufruf der Prozedur, die die Dateien auflisten soll, übergibst du als Parameter ja den Ordner, dessen Inhalt aufgelistet werden soll. Du sagtest eben, du hast den Verzeichnisnamen bereits ermittelt (er steht vermutlich in einer Variablen) und diesen übergibst du dieser Prozedur einfach.
Nachtrag: Achso, "du hattest vor", dann musst du ihn über
Delphi-Quellcode:
ermitteln ;)
Ini.ReadString(ComboBox1.Text, 'Directory', '');
|
Re: Ordnerinhalte in Listbox auflisten
Also, die Verzeichnisse stehen in der ini-Datei.
Aufrufen tue ich das Verzeichnis aus der ini etwas so:
Delphi-Quellcode:
Und das müsste ich jetzt einfach der Abfrage übergeben?
s2 := ini.ReadString(sec[i],'Directory','');
mfg black_hawk |
Re: Ordnerinhalte in Listbox auflisten
Oh, den letzten Post habe ich gar nicht gesehen. Hatte kurz ein Problem mit meiner Internet-Connection.
Da war ich ja schon auf dem richtigen Weg. mfg black_hawk |
Re: Ordnerinhalte in Listbox auflisten
Ja, dein Weg stimmte. :)
Den Verzeichnisnamen übergibst du, wie oben schon gesagt, deiner Prozedur, da diese als ersten Parameter das Verzeichnis erwartet, in dem sich die dateien befinden, die aufgelistet werden sollen.
Delphi-Quellcode:
GetFilesInDirectory(VariableMitVerzeichnisnamen, '*.avi*', ListBox1.Items, True, True);
|
Re: Ordnerinhalte in Listbox auflisten
Alles klar, dann werde ich mich gleich nochmal ran setzten.
Danke! :thumb: mfg black_hawk |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 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