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?
Moderiert von Christian S.: Hinweis von Jakob Schöttl zu #0 am Ende eingearbeitet