Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   stringlist kompletten ordner laden (https://www.delphipraxis.net/97624-stringlist-kompletten-ordner-laden.html)

netscanner 13. Aug 2007 20:02


stringlist kompletten ordner laden
 
hallo,
wie kann ich alle Dateien aus einem Ordner meiner Wahl in eine Stringlist laden?

mkinzler 13. Aug 2007 20:03

Re: stringlist kompletten ordner laden
 
FindFirst, FindNext

scrat1979 13. Aug 2007 20:17

Re: stringlist kompletten ordner laden
 
Hallo!!

Wie mkinzler schon sagt, benutze einfach FindFirst und FindNext. Hatten wir schon 1000x im Forum :oops:

.. aber ich will ja nicht so sein :-)

Delphi-Quellcode:
procedure GetFilesInDirectory(ResultStringList : TStrings; ADirectory: String; Mask : String = '*.*'; Rekursiv : Boolean = True);
var
  F        : TSearchRec;
  Dir      : string;
begin
   Dir := IncludeTrailingPathDelimiter(ADirectory);
  if (Rekursiv) and
    (FindFirst(Dir + '*.*', faAnyFile, F) = 0) then
  try
    repeat
      if (F.Name <> '.') and (F.Name <> '..') and
        ((F.Attr and faDirectory) = faDirectory) then
        GetFilesInDirectory(ResultStringList, Dir + F.Name, Mask, Rekursiv);
    until FindNext(F) <> 0;
  finally
    FindClose(F);
  end;

 if FindFirst(Dir + Mask, faAnyFile, F) = 0 then
  try
    repeat
      if (F.Name <> '.') and (F.Name <> '..') and
        ((F.Attr and faDirectory) <> faDirectory) then
        ResultStringList.Add(Dir + F.Name);
    until FindNext(F) <> 0;
  finally
    FindClose(F);
  end;
end;
Möchtest Du auch die Verzeichnisse erhalten, ändere den zweiten Teil folgendermaßen um:

Delphi-Quellcode:
[...]
 if FindFirst(Dir + Mask, faAnyFile, F) = 0 then
  try
    repeat
      if ((F.Name <> '.') and (F.Name <> '..')) then
        ResultStringList.Add(Dir + F.Name);
    until FindNext(F) <> 0;
  finally
    FindClose(F);
  end;
end;
Hoffe es funktioniert so, habe die Prozedur aus meiner eigene Codesammlung kopiert...

SCRaT

//EDIT: Sehe gerade, daß Du Delphi 6 verwendest. Sollte
Delphi-Quellcode:
Dir := IncludeTrailingPathDelimiter(ADirectory);
nicht funktionieren, dann lösche es einfach raus. Die Zeile sorgt lediglich dafür, daß ein übergebener Pfad mit einem Backslash abgeschlossen wird, egal ob z.B. c:\test oder c:\test\ übergeben wird. Müsstest es halt manuell mittels "If Pos..." lösen.

marabu 13. Aug 2007 20:22

Re: stringlist kompletten ordner laden
 
Hallo,

dann spendiere ich noch die Funktionen GetFiles() (nicht rekursiv) und AllFiles() (rekursiv).

Grüße vom marabu

DP-Maintenance 14. Aug 2007 05:10

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.

netscanner 15. Aug 2007 09:15

Re: stringlist kompletten ordner laden
 
danke leute, ich wusste doch, dass ich mich auf Euch verlassen kannt ;)
Funktioniert super :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 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