Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   zu %appdata% in String Variable navigieren (https://www.delphipraxis.net/153709-zu-appdata-string-variable-navigieren.html)

taveuni 13. Aug 2010 09:11

Delphi-Version: 2007

zu %appdata% in String Variable navigieren
 
Hallo zusammen,

Ich suche und suche..
Mein Programm liest aus der Registry den Pfad einer anderen Applikation zu dessen Ini Datei aus.
Ich bekomme dann so was wie %appdata%\companyname\appname\appname.ini.
Nun muss ich in diese Ini schreiben. Wie komme ich aber an den effektiven Pfad?
Delphi-Quellcode:
var
 s: String;
begin
 s:= %appdata%\companyname\appname\appname.ini // die datei existiert
 if not FileExists(s) then
   ShowMessage('Houston we have a problem')
end
Wenn ich den ganzen Pfad als String in den Explorer gebe führt er mich ans
richtige Ort. Das Selbe möchte ich programmatisch erreichen.
Ich war schon auf der Suche mit GetEnvironmentVariable. Aber das ist es nicht.

Vermutlich war ich zu lange in den Ferien.

Bernhard Geyer 13. Aug 2010 09:15

AW: zu %appdata% in String Variable navigieren
 
Zitat:

Zitat von taveuni (Beitrag 1041793)
Ich war schon auf der Suche mit GetEnvironmentVariable. Aber das ist es nicht.

Doch, ist es schon. Nennt sich dort aber "APPDATA". Die % sind der Kennzeichner für den Windows Explorer das er nach einer Umgebungsvariable suchen soll.

himitsu 13. Aug 2010 09:28

AW: zu %appdata% in String Variable navigieren
 
Und man muß Environmentvariablen selber übersetzen, denn diese APIs (wie FileExists, FindFirst oder CreateFiles) machen sowas nicht von selbst.

turboPASCAL 13. Aug 2010 09:34

AW: zu %appdata% in String Variable navigieren
 
Etwas fertiges gibt es IMHO nicht.

Man muss sich solch einen String selbst zerlegen und untersuchen ( parsen ),
danach wieder entsprechend zusammen setzen.


// Edit: Ja, na toll Himi wieder. Wer kommt schon auf MSDN-Library durchsuchenExpandEnvironmentStrings ;)

himitsu 13. Aug 2010 09:36

AW: zu %appdata% in String Variable navigieren
 
MSDN-Library durchsuchenExpandEnvironmentStrings
(mir viel vorhin der Name nicht ein, aber wenn man über MSDN-Library durchsuchenGetEnvironmentVariable weitersucht, dann findet man es auch so :angle2: )

taveuni 13. Aug 2010 09:37

AW: zu %appdata% in String Variable navigieren
 
Versteh ich jetzt alles nicht.

Ich muss den String also selbst parsen?
Also die in '%%' als Environment Variable holen und dann mit
dem Rest verknüpfen?
Gibt es da keine WinApi Funktion (welche der Explorer vllt. auch nutzt).
Wenn ich den String Z.B. in Totalcommander eingebe springt der ja auch dorthin wo er soll.

Edit:
Zu spät.
ExpandEnvironmentStrings wars.
Vielen Dank

himitsu 13. Aug 2010 09:44

AW: zu %appdata% in String Variable navigieren
 
jupp :)
Delphi-Quellcode:
function ExpandEnv(const S: String): String;
var i: Integer;
begin
  i := ExpandEnvironmentStrings(PChar(S), nil, 0);
  SetLength(Result, i - 1);
  ExpandEnvironmentStrings(PChar(S), PChar(Result), i);
end;

turboPASCAL 13. Aug 2010 09:59

AW: zu %appdata% in String Variable navigieren
 
Ja ja, Asche auf mein Haupt. Aber wer kommt den schon auf MSDN-Library durchsuchenExpandEnvironmentStrings :gruebel: :stupid:

himitsu 13. Aug 2010 10:05

AW: zu %appdata% in String Variable navigieren
 
"erweitere alle Environment-Strings"?
Aber mach dir nichts draus, dieses haben die im MSDN schon ein bissl versteckt.


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