AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Vollständigen Dateinamen ermitteln aus "%ProgramFiles%\..."
Thema durchsuchen
Ansicht
Themen-Optionen

Vollständigen Dateinamen ermitteln aus "%ProgramFiles%\..."

Ein Thema von shadowman · begonnen am 27. Apr 2009 · letzter Beitrag vom 28. Apr 2009
Antwort Antwort
shadowman

Registriert seit: 1. Nov 2005
48 Beiträge
 
#1

Vollständigen Dateinamen ermitteln aus "%ProgramFiles%\

  Alt 27. Apr 2009, 18:44
Hallo,
wenn ich aus der Registry sowas auslese:
"%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:
"%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.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Vollständigen Dateinamen ermitteln aus "%ProgramFil

  Alt 27. Apr 2009, 18:56
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;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Vollständigen Dateinamen ermitteln aus "%ProgramFil

  Alt 27. Apr 2009, 19:00
Versuch es mal mit MSDN-Library durchsuchenGetEnvironmentVariable.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Vollständigen Dateinamen ermitteln aus "%ProgramFil

  Alt 27. Apr 2009, 19:00
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Vollständigen Dateinamen ermitteln aus "%ProgramFil

  Alt 27. Apr 2009, 21:59
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
shadowman

Registriert seit: 1. Nov 2005
48 Beiträge
 
#6

Re: Vollständigen Dateinamen ermitteln aus "%ProgramFil

  Alt 28. Apr 2009, 09:53
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 von Sir Rufo:
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!
  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 09:06 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