
Best Answer Spitfyr , 21 May 2015 - 09:29
Ich habe eine Lösung gefunden
Da es mit SprintfBox der Pointer angezeigt wird klappt das auch mit Sprintf
Sprintf(svGUID,"%s",pString);

Best Answer Spitfyr , 21 May 2015 - 09:29
Ich habe eine Lösung gefunden
Da es mit SprintfBox der Pointer angezeigt wird klappt das auch mit Sprintf
Sprintf(svGUID,"%s",pString);
Posted 20 May 2015 - 15:42
Wir wollen zur eindeutigen identifikation unserer Installation eine GUID erzeugen und diese in lokal speichern.
Zum Erzeugen der GUID verwende ich von Windows bereitgestellte Funktionen wie folgt:
prototype RPCRT4.UuidCreate(POINTER);
prototype RPCRT4.UuidToStringA(POINTER, POINTER);
....
function GetGUID(hMSI)
STRING svGUID;
POINTER pString;
struct_GUID vGUID;
begin
....
RPCRT4.UuidCreate(&vGUID);
RPCRT4.UuidToStringA(&vGUID, &pString); //diese Funktion erzeugt die GUID in der bekannten Form
SprintfBox(WARNING,"GUID","GUID %s",pString); //die GUID wird korrekt angezeigt
svGUID = pString; //lässt sich nicht kompilieren, da ein String erwartet wird
....
end;
SprintfBox zeigt mit dann auch eine GUID korrekt an.
Damit ich die GUID aber in der Registry speichern kann will ich sie einer lokalen Variable zuweisen.
Dies schlägt aber immer fehl, da dass InstallScript immer anmerkt, dass an der entsprechenden Stelle eine String variable
benötigt wird (svGUID = pString).
Wie muss ich vorgehen, um auf pString im Scrpt mit den String-Funktionen zugreifen zu können.
Es geht auch nicht, dasw ich vor dem Aufruf der Funkion pString= &svGUID setze, da die Funktion
UuidToString nur einen Zeiger erwartet und die Speicherverwaltung für diesen selbst übernimmt.
Grüße
Spitfyr
Posted 21 May 2015 - 09:29 Best Answer
Ich habe eine Lösung gefunden
Da es mit SprintfBox der Pointer angezeigt wird klappt das auch mit Sprintf
Sprintf(svGUID,"%s",pString);