</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> Wenn ich in einem Etikett die Frage 'frage=REQUEST ("ASSOCLP_NAME", "", name)' stelle, bekomme ich nach Prüfung mit 'xxx=vartype (name) : print xxx' eine Variable vom Typ 2 (String). Das ist so seeeeehr unschön. Nochmal: Nach dem Statement </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> rrr = REQUEST ("ASSOCLP_PARVALUE", expr, name_or_index, type, flags, dim1, dim2, value_par) steht in der Variablen 'type' der Typ des Parameters, den Du abgefragt hast. In der Variablen 'rrr' (oder bei Dir 'frage') steht der Status des Request-Befehls. Der ist null, wenn er fehlgeschlagen ist. Dann bleiben die Parameter unverändert, bzw. werden auf 0 gesetzt. Somit kannst Du prüfen, ob ein Parameter gefunden wurde/vorhanden ist.
Je nachdem, welcher Typ abgefragt wurde, wird Deine Variable 'value_par' auch so definiert.
Erwartest Du nun einen Stringwert und verwendest in der Folge des Skripts ungeprüft (durch den type-Wert, ob auch tatsächlich ein String gefunden wurde) String-Funktionen, kommt die Fehlermeldung. Der Text2-Befehl ist übrigens keine Stringfunktion per se, da er sowohl numerisches als auch Text ausgeben kann. Erst wenn Du im Argument eine Stringfunktion verwendest, würde es 'knallen'. Mein Vorschlag wäre folgender (Prinzip)
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> TexPar=""
rrr = REQUEST ("ASSOCLP_PARVALUE", "par_name", name_or_index, type, flags, dim1, dim2, value_par)
if rrr then
if type=4 then TexPar=value_par
if not(type=4) then TeXPar=str("%.4",value_par)
text2 0,0,"Inhalt: >"+TexPar+"<"
endif So, oder so ähnlich.
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> ...ich das Problem auf eine etwas weniger elegante Art gelöst:
Man muss zwar nicht unbedingt die Variablen des Objektes im Etikett wiederholen, aber man kann.hmmmm. Das finde ich nicht so ich sag mal vorsichtig 'sauber'. Zumindest nicht als Tipp.
Eine Unschönheit an GDL ist, daß es keine echten, sauberen Deklarationen gibt. Und daß es im Wesentlichen auch nur 2 Typen gibt: Real und String. Das kann man nur durch saubere Fallunterscheidungen wie mein Vorschlag oben umgehen.
[ 12. Januar 2004, 08:42: Beitrag editiert von: Ove Bodj ]