Einzelnen Beitrag anzeigen

Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: stringlist kompletten ordner laden

  Alt 13. Aug 2007, 21:17
Hallo!!

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

.. 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
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.
Michael Kübler
  Mit Zitat antworten Zitat