GetTempPathA [ERLEDIGT]

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

GetTempPathA [ERLEDIGT]

Beitrag von Koverhage »

Hallo,

woran könnte es liegen, das cRetVal anscheinend keinen Pfad enthält, obwohl
die Funktion als Länge 8 Bytes zurückgibt, was ja richtig ist, denn der Pfad ist c:\temp
+ dem Chr(0)

Code: Alles auswählen

FUNCTION GetTempPath_a()
Local nDll, cRetVal := space(260), nRetVal := 0, nSize := 260
nDll := DllLoad( "KERNEL32.DLL")
IF nDll != 0
   nRetVal := DllCall( nDll, DLL_STDCALL, "GetTempPathA", ;
                       @cRetVal, @nSize )
   DllUnload( nDll )
ENDIF

RETURN substr(cRetVal, 1, At(Chr(0),cRetVal)-1 )
Zuletzt geändert von Koverhage am Fr, 18. Jun 2010 9:02, insgesamt 1-mal geändert.
Gruß
Klaus
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: GetTempPathA

Beitrag von Rolf Ramacher »

Hi Klaus,

At liefert doch die Position - wenn Chr(0) nicht gefunden wird, gibt AT 0 zurück.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: GetTempPathA [ERLEDIGT]

Beitrag von Koverhage »

Hi Rolf,

das ist es nicht.

Die Reihenfolge der Parameter hat nicht gestimmt, muss so sein:

nRetVal := DllCall( nDll, DLL_STDCALL, "GetTempPathA", ;
@nSize, @cRetVal )

Zudem enthält die Rückgabe C:\TEMP\ also 8 Bytes ohne dem chr(0)

Über einen Schalter kann ich jetzt auswählen (wenn ich es benötige),
ob ich Unicode oder Ansi haben möchte.
Gruß
Klaus
Antworten