![]() |
Re: Relative Pfade
Die Flexibilität lässt sich ein wenig erhöhen:
Delphi-Quellcode:
Grüße vom marabu
const
ENV_DELPHI = 'DELPHI'; var basePath: string; begin basePath := IncludeTrailingPathDelimiter(GetEnvironmentVariable(ENV_DELPHI)); ShowMessage(ExtractRelativePath(basePath, ParamStr(0))); end; |
Re: Relative Pfade
man könnte ja och in AddFilesToList die Übergabe des Folder-Parameters ändern :angel:
Code:
aufgerufen wird es dann ganz genauso wie die originale Funktion.
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; 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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz