Delete - Fr 14.11.03 09:58
Titel: ...Umgebungsvariable in einem String auflösen?
Hallo!
Ich habe mich gestern gewundert, warum eins meiner Programme unter XP meldet, dass es Symbole zu Verknüpfungen nicht finden kann. Des Rätsels Lösung waren Strings wie diese
Quelltext
1:
| %SYSTEMROOT%\blablabla\Icon.ico |
Da "FileExists" in dem Fall die Umgebungsvariable als String behandelt und nicht automatisch parst, klappt die Prüfung natürlich auch nicht. Aber da gibt´s Abhilfe aus dem System, und die nennt sich "ExpandEnvironmentString". Da es eine API-Funktion ist, bei der man mit Puffer und Puffergröße hantieren muss, hier eine einfache Umsetzung als Funktion:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function ExpandEnvStr(const szInput: string): string; const MAXSIZE = 32768; begin SetLength(Result,MAXSIZE); SetLength(Result,ExpandEnvironmentStrings(pchar(szInput), @Result[1],length(Result))-1); end; |
Der kann man den String (s. oben) übergeben
Delphi-Quelltext
1: 2: 3:
| ShowMessage( ExpandEnvStr('%SYSTEMROOT%\blablabla\Icon.ico') ); |
und erhält dann anstelle der Umgebungsvariablen ihren Inhalt, womit dann natürlich auch Dateiprüfungen usw. wieder funktionieren.
Siehe auch:
...systemweit Umgebungsvariablen setzen/lesen? [
http://www.delphi-forum.de/viewtopic.php?t=18588]
Moderiert von
Christian S.: Hinweis von
Jakob Schöttl zu #0 am Ende eingearbeitet