Entwickler-Ecke

Dateizugriff - Alle Dateien aus einem Ordner auslesen


cux - Mi 06.04.05 23:33
Titel: Alle Dateien aus einem Ordner auslesen
hi

kurze frage:
wie kann ich alle dateien aus einem ordner einlesen ohne dass ich deren namen kenne?

cux


Popov - Mi 06.04.05 23:47


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
procedure GetAllFiles(Path, ExtMask: String; List: TStrings;
  SubFolder: Boolean);
var
  Attrib, i: Integer;
  Search: TSearchRec;
begin
  Attrib := faArchive + faReadOnly + faHidden;

  if Path[Length(Path)] <> '\' then Path := Path + '\';

  with TStringList.Create do
  try
    CommaText := ExtMask;

    for i := 0 to Count - 1 do
    if FindFirst(Path + '*.' + Strings[i], Attrib, Search) = 0 then
      repeat
        List.Add(AnsiUpperCase(Path + Search.Name));
      until FindNext(Search) <> 0;

    FindClose(Search);
  finally Free end;

  if SubFolder then
  begin
    if FindFirst(Path + '*.*', faDirectory, Search) = 0 then
    begin
      repeat
        if ((Search.Attr and faDirectory) = faDirectory) and
          (Search.Name[1] <> '.'then
          GetAllFilesEM(Path + Search.Name, ExtMask, List, SubFolder);
      until FindNext(Search) <> 0;

      FindClose(Search);
    end;
  end;
end;


Delphi-Quelltext
1:
GetAllFiles('c:\programme\''*', ListBox1.Items, False);                    


Delete - Mi 06.04.05 23:48

Eine fantastische Erfindung, die sich Suche nennt (Suche in: Delphi-Forum, Delphi-Library DATEIEN ORDNER AUSLESEN) hätte dir sicher schneller geholfen.


@Popov: Wie war das? Wozu schreibt jemand FAQ-Beiträge, wenn Sie keiner liest? :)


Popov - Do 07.04.05 00:16

Ja, aber GetAllFiles ist meine lieblings Prozedur :D . Keine Ahnung wie oft ich die schon verbessert habe. Es fällt mir immer eine neue Kleinigkeit ein. Bei dieser kann man mehrere Erweiterungen eingeben. Solche Verbesserungen müssen unter das Volk ;)


cux - Do 07.04.05 09:52

Danke!

Deine Procedure ist echt genial! Genau das was ich gesucht habe!

cux


Mafoe - Di 05.07.05 15:11

Kann man das dann auch irgendwie in ein Feld speichern?
Oder anderweitig verwenden als in der Listbox?


jaenicke - Di 05.07.05 15:21

user profile iconMafoe hat folgendes geschrieben:
Kann man das dann auch irgendwie in ein Feld speichern?
Oder anderweitig verwenden als in der Listbox?

Wie meinst du das mit dem Feld?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  tmpList: TStringList;
begin
  tmpList := TStringList.Create;
  GetAllFiles('c:\programme\''*', tmpList, False);
  ShowMessage(tmpList.Text);
  if tmpList.Count > 1 then
    ShowMessage(tmpList[1]);
  tmpList.Free;
end;