Hallo,
habe folgendes Problem: Ich möchte aus einem Projekt, das Benutzer-Variablen
besitzt, deren Wert auslesen und im Programm auswerten. Das Programm soll,
je nach Wert der Benutzervariable in der Projektdatei andere Daten an L&L
senden.
Ich hatte es zunächst mit numerischen Variablen versucht, aber ohne Erfolg:
Im Projekt eine Benutzervariable angelegt und mit dem Wert -1- belegt.
Im Programm folgende Zeilen (nach dem Laden der Projektdatei!):
nBuffer := 0
nRet := LlGetVariableType(LL_Job,"@MYUSERVAR")
IF nRet = LL_NUMERIC
nRet := LlGetUserVariableContents(LL_JOB,"@MYUSERVAR",@nBuffer,1)
ENDIF
nRet ist immer -44, also Fehler Buffer zu klein. Vergrößerung des für
Buffergröße vorgesehenen 4. Parameters in llGetUserVariableContents auf 2
und schrittweise bis 19 brachte keine Änderung. Bei 20 kam es zum
Programmabsturz.
Habe es dann mit einer Textvariable versucht:
Im Projekt eine Benutzervariable angelegt und mit dem Wert “V” belegt.
Im Programm folgende Zeilen (nach dem Laden der Projektdatei!):
cBuffer := “X” // Vorbelegung Buffer
nRet := LlGetVariableType(LL_Job,"@MYUSERVAR")
IF nRet = LL_TEXT
nRet := LlGetUserVariableContents(LL_JOB,"@MYUSERVAR",@cBuffer,1)
ENDIF
Da im Projekt die Benutzervariable mit 1 Byte belegt ist, habe ich
versuchsweise ebenfalls als Länge 1 Byte beim 4. Parameter angegeben.
Ergebnis: cBuffer wird überschrieben und ist anschließend leer (String-Länge
0)
Wenn ich aber z.B. cBuffer mit 20 Leerzeichen vorbelege und im 4. Parameter
20 angebe, erhalte ich nach LLGetUserVariableContents den Wert “V” in
cBuffer. Es wird also korrekt nur 1 Byte nach cBuffer transferiert, denn
mehr ist ja nicht da. Aber warum funktioniert es nicht, wenn der Buffer auch
nur 1 Byte groß ist (was ja ausreichen würde) und dieses 1 Byte korrekt in
der Funktion als Parameter angegeben ist? Und warum geht es nicht mit
numerischen Werten?
Vielleicht weiß jemand Rat? Danke.
Klemens