Thema: Delphi Relative Pfade

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#12

Re: Relative Pfade

  Alt 30. Okt 2007, 13:14
man könnte ja och in AddFilesToList die Übergabe des Folder-Parameters ändern

Code:
procedure TForm1.AddFilesToList(Filter, Folder: string; Recurse: Boolean[color=#ff0000];
  RelFolder = ''[/color]);
var
  sr: TSearchRec;
  sDirList: TStringList;
  i: Integer;
begin
  if FindFirst (Folder + [color=#ff0000]RelFolder +[/color] Filter, faAnyFile, sr) = 0 then
  repeat
    ListBox1.Items.Add ([color=#ff0000]RelFolder +[/color] sr.Name);
  until FindNext(sr) <> 0;
  FindClose(sr);
  if Recurse then
  begin
    sDirList := TStringList.Create;
    try
      GetSubDirs (Folder [color=#ff0000]+ RelFolder[/color], sDirList);
      for i := 0 to sDirList.Count - 1 do
        if (sDirList[i] <> '.') and (sDirList[i] <> '..') then
        begin
          Update;
          ListBox1.Refresh;
          AddFilesToList (Filter, [color=#ff0000]Folder[/color], Recurse[color=#ff0000],
            IncludeTrailingPathDelimiter (RelFolder + sDirList[i])[/color]);
        end;
    finally
      sDirList.Free;
    end;
  end;
end;
aufgerufen wird es dann ganz genauso wie die originale Funktion.
RelFolder bleibt also beim Aufruf frei und wird nur intern verwendet.


und in Kurz zusammen mit anderen kleinen Änderungen (siehe Kommentare) dann so:
Delphi-Quellcode:
procedure TForm1.AddFilesToList(const Filter, Folder: String; Recurse: Boolean;
  const RelFolder: String = '');
var
  sr: TSearchRec;
begin
  if FindFirst(Folder + RelFolder + Filter, faAnyFile, sr) = 0 then
    repeat
      if (sr.Name = '.') or (sr.Name = '..') // du wills doch eh nur Dateinamen (AddFiles?)
        or (sr.Attr and faDirectory <> 0) then continue;
      ListBox1.Items.Add(RelFolder + sr.Name);
    until FindNext(sr) <> 0;
  FindClose(sr);
  if Recurse and FindFirst(Folder + RelFolder + '*.*', faAnyFile, sr) = 0 then
    repeat
      if (sr.Name = '.') or (sr.Name = '..') // nur Verzeichnisse
        or (sr.Attr and faDirectory = 0) then continue;
      Update;
      ListBox1.Refresh;
      AddFilesToList(Filter, Folder, true, RelFolder + sr.Name + '/');
    until FindNext(sr) <> 0;
  FindClose(sr);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat