AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi [Gelöst] Relativen Pfad in absoluten umwandeln
Thema durchsuchen
Ansicht
Themen-Optionen

[Gelöst] Relativen Pfad in absoluten umwandeln

Ein Thema von Dalai · begonnen am 12. Jun 2015 · letzter Beitrag vom 12. Jun 2015
Antwort Antwort
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#1

[Gelöst] Relativen Pfad in absoluten umwandeln

  Alt 12. Jun 2015, 15:08
Hallo ihr ,

gleich vorweg: nein, es geht nicht um die üblichen relativen Pfade wie
Code:
..\..\pfad\datei.exe
Gegeben sei folgender relativer Pfad:
Code:
system32\dateiname.exe
Wie bekommt man daraus auf einfache Weise den absoluten Pfad? PathFindOnPath arbeitet offenbar nur, wenn man ihm nur den Dateinamen übergibt. Auch unter den anderen Shell Path Handling Functions ist irgendwie nichts passendes dabei.

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
  Mit Zitat antworten Zitat
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
255 Beiträge
 
Delphi XE5 Professional
 
#2

AW: Relativen Pfad in absoluten umwandeln

  Alt 12. Jun 2015, 15:18
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?
Dirk
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#3

AW: Relativen Pfad in absoluten umwandeln

  Alt 12. Jun 2015, 15:32
Naja, für den o.g. Pfad ist dieser absolute Pfad gemeint:
Code:
%SystemRoot%\system32\dateiname.exe
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 .

MfG Dalai
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Relativen Pfad in absoluten umwandeln

  Alt 12. Jun 2015, 15:42
Das wird aber nicht so gehen, da auch Windows den Pfd durch einfaches "Ausprobieren" (Iterieren durch Pfadliste) ermittelt.
Markus Kinzler
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Relativen Pfad in absoluten umwandeln

  Alt 12. Jun 2015, 16:01
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;
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#6

AW: Relativen Pfad in absoluten umwandeln

  Alt 12. Jun 2015, 16:58
@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
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Relativen Pfad in absoluten umwandeln

  Alt 12. Jun 2015, 17:02
Allerdings ist dein Code so nicht verwendbar, ...
Bei mir läuft der genau so wie ich ihn gepostet habe, allerdings kann sich da zwischen Delphi 5 und Delphi XE4 auch was im Aufruf geändert haben.
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#8

AW: Relativen Pfad in absoluten umwandeln

  Alt 12. Jun 2015, 17:05
Ringli nutzt System.SysUtils.GetEnvironmentVariable.
Dalai denkt wohl an die gleichnamige WinAPI.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#9

AW: Relativen Pfad in absoluten umwandeln

  Alt 12. Jun 2015, 17:40
In der Tat. Wusste nicht, dass es da einen Wrapper gibt (offenbar seit Delphi 6 oder 7).

MfG Dalai
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#10

AW: Relativen Pfad in absoluten umwandeln

  Alt 12. Jun 2015, 20:17
Wie wäre es damit
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:35 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