Einzelnen Beitrag anzeigen

Daniel B
(Gast)

n/a Beiträge
 
#9

Re: Probs mit TString und Treeview

  Alt 6. Jul 2003, 20:02
Hallo,

oder mit leicht verkürztem Kopf und Pfad und Dateiendung werden hintereinader eingegeben, also von der Reihenfolge der Parameter her. Was evtl. etwas "schöner" ist.
Delphi-Quellcode:
procedure GetFiles(const Directory, FileMask: String; Files: TStrings; SubFolders: Boolean);
  //Hilfsfunktion, um Schrägstriche hinzuzfügen, wenn nötig
  function SlashSep(const Path, S: string): string;
  begin
    if AnsiLastChar(Path)^ <> '\then Result := Path + '\' + S
    else Result := Path + S;
  end;

var SearchRec: TSearchRec;
    nStatus: Integer;
begin
  //Zuerst alle Dateien im aktuelle Verzeichnis finden

  if FindFirst(SlashSep(Directory, FileMask), faAnyFile-faDirectory-faVolumeID,
  SearchRec) = 0 then
  begin
    try
      repeat
        Files.Add(SlashSep(Directory, SearchRec.Name));
      until FindNext(SearchRec) <> 0;
    finally
      SysUtils.FindClose(SearchRec);
    end;
  end;

  //Als nächstes nach Unterverzeichnissen suchen und, wenn benötigt, durchsuchen
  if SubFolders then
  begin
    if FindFirst(SlashSep(Directory,'*.*'), faAnyFile, SearchRec) = 0 then
    begin
      try
        repeat
          //Wenn es ein Verzeichnis ist, Rekursion verwenden
          if (SearchRec.Attr and faDirectory) <> 0 then
          begin
            if ((SearchRec.Name <> '.') and (SearchRec.Name <> '..')) then
              GetFiles(SlashSep(Directory, SearchRec.Name), FileMask, Files, SubFolders);
          end;
        until FindNext(SearchRec) <> 0;
      finally
        SysUtils.FindClose(SearchRec);
      end;
    end;
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetFiles('C:\', '*.jpg*', Memo1.Lines, False);
end;
Grüsse, Daniel
  Mit Zitat antworten Zitat