Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ordnerinhalte in Listbox auflisten (https://www.delphipraxis.net/48407-ordnerinhalte-listbox-auflisten.html)

black_hawk 24. Jun 2005 19:53


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:
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;
Hiermit rufe ich bis jetzt die Suche auf. Könnte aber auch gleich eingelesen werden wenn ich auf einen ComboBox-Eintrag klicke.

Delphi-Quellcode:
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;
Für Tipps wäre ich sehr Dankbar!

mfg black_hawk

[edit=alcaeus]code- durch delphi-Tags ersetzt. In Zukunft bitte die richtigen Tags verwenden. Mfg, alcaeus[/edit]

Matze 24. Jun 2005 19:57

Re: Ordnerinhalte in Listbox auflisten
 
Mit

Delphi-Quellcode:
ComboBox1.Text
bzw

Delphi-Quellcode:
ComboBox1.ItemIndex
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.

black_hawk 24. Jun 2005 20:01

Re: Ordnerinhalte in Listbox auflisten
 
Das ging ja flink! :shock:

Werde ich gleich mal versuchen. Danke!

mfg black_hawk

Matze 24. Jun 2005 20:05

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.

black_hawk 24. Jun 2005 20:16

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

Matze 24. Jun 2005 20:19

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:
Ini.ReadString(ComboBox1.Text, 'Directory', '');
ermitteln ;)

black_hawk 24. Jun 2005 20:23

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:
    s2 := ini.ReadString(sec[i],'Directory','');
Und das müsste ich jetzt einfach der Abfrage übergeben?

mfg black_hawk

black_hawk 24. Jun 2005 20:27

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

Matze 24. Jun 2005 20:27

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);

black_hawk 24. Jun 2005 20:29

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 13:44 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz