![]() |
[Gelöst] Relativen Pfad in absoluten umwandeln
Hallo ihr :),
gleich vorweg: nein, es geht nicht um die üblichen relativen Pfade wie
Code:
Gegeben sei folgender relativer Pfad:
..\..\pfad\datei.exe
Code:
Wie bekommt man daraus auf einfache Weise den absoluten Pfad?
system32\dateiname.exe
![]() ![]() Nun könnte man auf die Idee kommen, mit ExtractFileName den Dateinamen aus dem gegebenen Pfad zu extrahieren und danach mit PathFindOnPath nach der Datei suchen zu lassen. Aber dadurch geht die Information über den Pfad verloren, oder anders ausgedrückt: was ist, wenn es mehrere gleichnamige Dateien in einem Verzeichnis im %PATH% gibt? Dieser Weg ist also zu unzuverlässig. Kaum vorstellbar, dass (sich) nicht schon jemand vor mir diese Frage gestellt hat, nur bin ich offenbar zu doof, die passende Antwort zu finden. Wer kann mir den richtigen Weg zeigen? MfG Dalai |
AW: Relativen Pfad in absoluten umwandeln
Moin,
da dein Pfad nicht ein-eindeutig ist dürfte das wohl schwer werden..... c:\a\system32\dateiname.exe und c:\b\system32\dateiname.exe...... welcher soll es denn nun sein? |
AW: Relativen Pfad in absoluten umwandeln
Naja, für den o.g. Pfad ist dieser absolute Pfad gemeint:
Code:
Mal etwas genauer formuliert: Die Pfade stammen aus der Konfiguration von Diensten oder Autostarts. Es sind dabei immer Pfade, die auf Verzeichnisse im %PATH% verweisen/liegen, so dass sie vom System selbst auch gefunden werden. Wenn es Duplikate gibt, dann soll der erste Fund benutzt werden, genau wie es PathFindOnPath auch handhabt. Aber ich will vermeiden, von Hand durch die Verzeichnisliste von %PATH% zu iterieren, um den passenden Dateinamen zu finden; ich will es eben einfacher ;).
%SystemRoot%\system32\dateiname.exe
MfG Dalai |
AW: Relativen Pfad in absoluten umwandeln
Das wird aber nicht so gehen, da auch Windows den Pfd durch einfaches "Ausprobieren" (Iterieren durch Pfadliste) ermittelt.
|
AW: Relativen Pfad in absoluten umwandeln
Wie wäre es damit?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ShortName, LongName: string; begin ShortName:= 'system32\dateiname.exe'; LongName := FileSearch(ShortName, GetEnvironmentVariable('Path')); showmessage(LongName); end; |
AW: Relativen Pfad in absoluten umwandeln
@ringli: Ah, dankeschön! FileSearch kann tatsächlich mit relativen Pfaden arbeiten. Allerdings ist dein Code so nicht verwendbar, da GetEnvironmentVariable ein DWORD zurückgibt und den Inhalt der Umgebungsvariable in einem der Parameter. Aber das Prinzip zählt :).
MfG Dalai |
AW: Relativen Pfad in absoluten umwandeln
Zitat:
|
AW: Relativen Pfad in absoluten umwandeln
|
AW: Relativen Pfad in absoluten umwandeln
Zitat:
MfG Dalai |
AW: Relativen Pfad in absoluten umwandeln
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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-2025 by Thomas Breitkreuz