Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Vollständigen Dateinamen ermitteln aus "%ProgramFiles%\..." (https://www.delphipraxis.net/133195-vollstaendigen-dateinamen-ermitteln-aus-programfiles%5C.html)

shadowman 27. Apr 2009 18:44


Vollständigen Dateinamen ermitteln aus "%ProgramFiles%\
 
Hallo,
wenn ich aus der Registry sowas auslese:
Delphi-Quellcode:
"%ProgramFiles%\Windows Mail\WinMail.exe" /mailurl:"%1"
wie komme ich zu dem eigentlichen vollständigen Pfad?

Parameter hinten werden bereits durch eine selbstgebastelte Funktion herausgefiltert (btw.: gibt es dafür irgendeine Standardfunktion?)

Es bleibt also:
Delphi-Quellcode:
"%ProgramFiles%\Windows Mail\WinMail.exe"
In diesem Fall könnte man bestimmt was mit SpecialFolder für Programmdateien machen oder sowas, denke ich, aber gibt es da eine Funktion, die solche "Platzhalter", sage ich mal, (wie "%ProgramFiles%") umwandelt und den eigentlichen Pfad zurückgibt?

Meine Suche war bisher leider nicht von Erfolg gekrönt.

shmia 27. Apr 2009 18:56

Re: Vollständigen Dateinamen ermitteln aus "%ProgramFil
 
Delphi-Quellcode:
var
  mailprog : string;
begin
  mailprog := '%ProgramFiles%\Windows Mail\WinMail.exe';
  ExpandEnvironmentVar(mailprog);
PS: Procedure vergessen
Delphi-Quellcode:
function ExpandEnvironmentVar(var Value: string): Boolean; // kopiert aus der JCL
var
  R: Integer;
  Expanded: string;
begin
  SetLength(Expanded, 1);
  R := ExpandEnvironmentStrings(PChar(Value), PChar(Expanded), 0);
  SetLength(Expanded, R);
  Result := ExpandEnvironmentStrings(PChar(Value), PChar(Expanded), R) <> 0;
  if Result then
  begin
    StrResetLength(Expanded);
    Value := Expanded;
  end;
end;

DeddyH 27. Apr 2009 19:00

Re: Vollständigen Dateinamen ermitteln aus "%ProgramFil
 
Versuch es mal mit MSDN-Library durchsuchenGetEnvironmentVariable.

Christian Seehase 27. Apr 2009 19:00

Re: Vollständigen Dateinamen ermitteln aus "%ProgramFil
 
Moin Shadowman,

das sollte mit MSDN-Library durchsuchenExpandEnvironmentStrings gehen.

Was das Abschneiden von Parametern angeht:
Fängt der Pfad mit einem " an, gehört alles, was zwischen dem ersten " und dem nächsten " steht zum Pfad.
Fängt der Pfad nicht mit einem " an, gehört alles bis zum ersten Leerzeichen zum Pfad.
Sollte kein Leerzeichen enthalten sein, ist der gesamte String der Pfad.

Sir Rufo 27. Apr 2009 21:59

Re: Vollständigen Dateinamen ermitteln aus "%ProgramFil
 
Zitat:

Zitat von Christian Seehase
Moin Shadowman,

das sollte mit MSDN-Library durchsuchenExpandEnvironmentStrings gehen.

Was das Abschneiden von Parametern angeht:
Fängt der Pfad mit einem " an, gehört alles, was zwischen dem ersten " und dem nächsten " steht zum Pfad.
Fängt der Pfad nicht mit einem " an, gehört alles bis zum ersten Leerzeichen zum Pfad.
Sollte kein Leerzeichen enthalten sein, ist der gesamte String der Pfad.

Im Prinzip ja, aber es gibt Ausnahmen http://www.delphipraxis.net/internal...t.php?t=148093

shadowman 28. Apr 2009 09:53

Re: Vollständigen Dateinamen ermitteln aus "%ProgramFil
 
Hallo zusammen,
vielen Dank für Eure Antworten. So funktioniert es!

War scheinbar nah dran (habe nach "expandpath" etc. gesucht), aber die Kombination aus einem brauchbaren Funktionnamen und der Unit hat wohl nicht gestimmt :)


Zitat:

Zitat von Sir Rufo
Zitat:

Zitat von Christian Seehase
Moin Shadowman,

das sollte mit MSDN-Library durchsuchenExpandEnvironmentStrings gehen.

Was das Abschneiden von Parametern angeht:
Fängt der Pfad mit einem " an, gehört alles, was zwischen dem ersten " und dem nächsten " steht zum Pfad.
Fängt der Pfad nicht mit einem " an, gehört alles bis zum ersten Leerzeichen zum Pfad.
Sollte kein Leerzeichen enthalten sein, ist der gesamte String der Pfad.

Im Prinzip ja, aber es gibt Ausnahmen http://www.delphipraxis.net/internal...t.php?t=148093

So ähnlich hatte ich das auch gemacht, ja. Das mit den Ausnahmen werde ich mir dann noch anschauen.

Danke noch mal!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 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