Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Mok am 22.01.09 - 11:59:07

Titel: Feldwert in Execute-Statement ausführen
Beitrag von: Mok am 22.01.09 - 11:59:07
Hallo!
Mein Problem ist Folgendes:

Ich habe ein RTF. In einer Klasse greife ich dann auf dieses Feld zu, hole mir den sich darin befindenden Script-Code, schreibe diesen in die String-Variable script$ und möchte diesen in einem Execute (script$) ausführen lassen.
Befinden sich simple Anweisungen in dem Code funktioniert der Execute.
Sobald ich aber eine verschachtelte Anweisung schreibe, z.B.
Code
Call doc.ReplaceItemValue("FIELDNAME", "VALUE -> " & doc.GetItemValue("OHTERFIELDNAME")(0))
bricht Execute mit der Fehlermeldung "Unexpected: String Constant; Expected Statement" ab.
Füge ich den verschachtelten Code direkt in die Variable script$ (ohne ihn also vorher aus dem Feld auszulesen), funktioniert der Execute-Befehl wieder.

Was mache ich falsch??

Hier nochmal bildlich:  :)

Text im Feld "ScriptCode": (funktioniert nicht)
|
' just a comment
Msgbox Proc.GetItemValue("FIELDNAME")(0)
Call Proc.ReplaceItemValue("FIELDNAME", "VALUE -> " & Proc.GetItemValue("OTHERFIELDNAME")(0))
|
Code
script$ = doc.ScriptCode(0)
Execute script$

Code in der Variablen script$: (funktioniert)
Code
script$ = |
' just a comment
Msgbox Proc.GetItemValue("FIELDNAME")(0)
Call Proc.ReplaceItemValue("FIELDNAME", "VALUE -> " & Proc.GetItemValue("OTHERFIELDNAME")(0))
|
Execute script$

Beim Debuggen ist mir aufgefallen, dass wenn der Wert aus dem Feld kommt, die Anführungszeichen maskiert sind, also z.B.: Msgbox Proc.GetItemValue(""FIELDNAME"")(0).
Kommt der Wert direkt aus der Variablen, kann der Debugger diesen nicht mehr anzeigen  :-: (aber der Execute führt ihn korrekt aus)

Ich hoffe, ihr könnt mir weiterhelfen!

Grüße,

Mok
Titel: Re: Feldwert in Execute-Statement ausführen
Beitrag von: HH am 22.01.09 - 13:07:07
Hallo Mok,

die Pipes ( | ) im Feld ScriptCode sind überflüssig.

Hubert
Titel: Re: Feldwert in Execute-Statement ausführen
Beitrag von: Mok am 22.01.09 - 13:39:05
Hatte ich schon versucht.
Ändert leider nichts am Verhalten!
Titel: Re: Feldwert in Execute-Statement ausführen
Beitrag von: Mok am 22.01.09 - 14:23:47
Für alle, die es interessiert:
Es liegt daran, dass Notes wohl bei der Rückgabe eines RTF nach einer bestimmten Anzahl von Zeichen einen Zeilenumbruch einbaut (siehe hier http://atnotes.de/index.php/topic,36252.0.html (http://atnotes.de/index.php/topic,36252.0.html))

Nach Umstellung auf rtItem.GetUnformattedText funktioniert Execute wieder einwandfrei.