Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Funktion zum auflösen von Pfaden mit Umgebungsvariablen? (https://www.delphipraxis.net/170810-funktion-zum-aufloesen-von-pfaden-mit-umgebungsvariablen.html)

Popov 4. Okt 2012 06:14

Funktion zum auflösen von Pfaden mit Umgebungsvariablen?
 
Die Funktion GetEnvironmentVariable ist mir bekannt.

Bevor ich jedoch gleiche eine Funktion bastle die einen Pfad mit Umgebungsvariablen (z. B. "%USERPROFILE%\SendTo") auflöst, wollte ich fragen ob es bereits etwas fertiges gibt.

Und wenn wir schon dabei sind, vielleicht gibt es auch eine Funktion die automatisch aus normalen Pfaden einen Pfad mit Umgebungsvariablen erstellt.

Wie gesagt, nur eine Frage.

daywalker9 4. Okt 2012 06:39

AW: Funktion zum auflösen von Pfaden mit Umgebungsvariablen?
 
Hier im Forum suchenExpandEnvironmentStrings

Bummi 4. Okt 2012 06:42

AW: Funktion zum auflösen von Pfaden mit Umgebungsvariablen?
 
Delphi-Quellcode:
ExpandEnvironmentStrings('%USERPROFILE%\SendTo',Pchar(s),Length(s));

s.h.a.r.k 4. Okt 2012 06:48

AW: Funktion zum auflösen von Pfaden mit Umgebungsvariablen?
 
Zitat:

Zitat von Popov (Beitrag 1185606)
Und wenn wir schon dabei sind, vielleicht gibt es auch eine Funktion die automatisch aus normalen Pfaden einen Pfad mit Umgebungsvariablen erstellt.

PathUnExpandEnvStrings

Popov 4. Okt 2012 15:30

AW: Funktion zum auflösen von Pfaden mit Umgebungsvariablen?
 
Vielen Dank. Irgendwie hatte ich da die richtige Vermutung.

Zitat:

Zitat von daywalker9 (Beitrag 1185607)

Ich komme mit der Funktion nicht 100% klar, bzw. verstehe sie nicht in allen Einzelheiten. Mein Englisch ist verbesserungswürdig, aber was ich aus der MSDN Hilfe herauslesen kann ist, dass im Erfolgsfall die Funktion die Anzahl der nötigen Zeichen (inc. Nullzeichen) zurück gibt. Das gleiche (?) passiert wenn der String für den Rückgabewert zu klein dimensioniert ist. Beim Fehler gibt es als Rückgabe 0.

Wie soll man die Funktion nun verstehen? Zuerst die Funktion auf gut Glück ausführen um zu gucken ob alles ok ist, wenn nicht, dann ein zweites Mal mit den richtigen Werten?

Uwe Raabe 4. Okt 2012 15:36

AW: Funktion zum auflösen von Pfaden mit Umgebungsvariablen?
 
Zitat:

Zitat von Popov (Beitrag 1185722)
Wie soll man die Funktion nun verstehen? Zuerst die Funktion auf gut Glück ausführen um zu gucken ob alles ok ist, wenn nicht, dann ein zweites Mal mit den richtigen Werten?

Nicht auf gut Glück. Erst mit nSize = 0 und lpDst = nil und damit die benötigte Größe ermitteln. Dann den passenden Puffer allokieren und mit den korrekten Werten nochmal übergeben um das Ergebnis zu bekommen.

Popov 4. Okt 2012 15:45

AW: Funktion zum auflösen von Pfaden mit Umgebungsvariablen?
 
Ok, das mit dem "auf gut Glück" war etwas übertrieben formuliert, aber ist das tatsächlich so gedacht? Interessante Methode.

DeddyH 4. Okt 2012 15:46

AW: Funktion zum auflösen von Pfaden mit Umgebungsvariablen?
 
Das gibt es in der Win32-API immer wieder mal.

Jumpy 4. Okt 2012 15:50

AW: Funktion zum auflösen von Pfaden mit Umgebungsvariablen?
 
Aber das ist doch bei einigen API-Funktionen so, das man einen Buffer übergibt und z.B. ein Word? Der Buffer enthält dann soviel Inhalt wie reinpasste und die Word-Variable die Info, wie groß der Buffer hätte sein sollen.
Manchmal weiß man ja ungefähr wieviel zurückkommt, dann kann man dann direkt beim ersten mal einen großzügig bemessenen Buffer bereitstellen und dann diesen dann später nur bis zur benötigten/angegebenen Länge auslesen.

DeddyH 4. Okt 2012 16:34

AW: Funktion zum auflösen von Pfaden mit Umgebungsvariablen?
 
Ja, aber wozu einen "zu großen" Puffer deklarieren, wenn man die tatsächlich benötigte Größe vorher ermitteln kann?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr.
Seite 1 von 2  1 2      

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