Einzelnen Beitrag anzeigen

Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#3

Re: Unterordner eines Ordners suchen

  Alt 27. Okt 2005, 12:56
Man muss sich ja nicht mit FindFirst / FindNext rumschlagen. In der Codelib sind ja auch Beiträge zum suchen von Dateien, die dann einfach ein bisschen umschreiben...

Delphi-Quellcode:
procedure GetFilesInDirectory(Directory: String; const Mask: String;
                              List: TStrings;
                              WithSubDirs, ClearList: Boolean);

procedure ScanDir(const Directory: String);
var
  SR: TSearchRec;
  Dir : string;
begin
  if FindFirst(Directory + Mask, faAnyFile, SR) = 0 then try
    repeat
      Application.ProcessMessages;
      IF (Dir <> Directory) THEN
        begin
          List.Add(Directory);
          Dir := Directory;
        end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;

  if WithSubDirs then begin
    if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try
      repeat
        Application.ProcessMessages;
        if ((SR.attr and faDirectory) = 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;
Aufruf:

GetFilesInDirectory('C:\', '*.*', ListBox1.Items, True, True); Natürlich ist die Methode etwas zeitintensiv....

Edit1: Application.ProcessMessages...
Gruß St.Pauli
  Mit Zitat antworten Zitat