AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Relative Pfade

Ein Thema von taktaky · begonnen am 13. Okt 2007 · letzter Beitrag vom 30. Okt 2007
Antwort Antwort
Seite 2 von 2     12   
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: Relative Pfade

  Alt 13. Okt 2007, 16:57
Die Flexibilität lässt sich ein wenig erhöhen:

Delphi-Quellcode:
const
  ENV_DELPHI = 'DELPHI';
var
  basePath: string;
begin
  basePath := IncludeTrailingPathDelimiter(GetEnvironmentVariable(ENV_DELPHI));
  ShowMessage(ExtractRelativePath(basePath, ParamStr(0)));
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Relative Pfade

  Alt 30. Okt 2007, 14: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;
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz