Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 12. Jun 2002, 08:49
Hi,

ich habe noch eine kleine Anmerkung zu Luckies Code

Luckie testet, ob der Datei-/Verzeichnisname mit einem Punkt anfängt, übersieht jedoch den Fakt, das dieses sogar legitim ist, auch wenn der Explorer selbst das nicht zulässt. Von daher möchte ich noch folgenden Code vorschlagen. (Zusätzlich sind Datei- und Verzeichnissuche miteinander verbunden, die Liste ist unsortiert.)

Desweiteren habe ich noch einen try...finally...end Block eingesetzt, welcher garantiert, dass FindClose aufgerufen wird, um die von FindFirst belegten Ressourcen wieder freizugeben.

Code:
procedure FindFiles(Directory: String; Recurse: Boolean; List: TStrings);
var
  Res: Integer;
  SR: TSearchRec;
begin
  if AnsiLastChar(Directory)^ <> '\' then
    Directory := Directory + '\';
  Res := FindFirst(Directory + '*.*', faAnyFile, SR); try
  if Res = 0 then
  repeat
    if (SR.Name <> '.') and (SR.Name <> '..') then
      if SR.Attr and faDirectory = 0 then
        List.Add(Directory + SR.Name)
      else if Recurse then
        FindFiles(Directory + SR.Name, True, List);
  until FindNext(SR) <> 0;
  finally FindClose(SR);
end;
Ich habe den Code in dieser Form nicht getestet, er sollte aber funktionieren - mehr oder weniger

Parameterliste
  • Directory - Startverzeichnis für die Dateisuche
  • Recurse - True um Unterverzeichnisse nach Dateien zu durchsuchen
  • List - Ein String List (z.B. TStringList), welche die gefundenen Dateien aufnimmt.

Ich hoffe, dass das auch ein wenig hilft.

P.S. Luckie: Nicht böse sein
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat