Domino 9 und frühere Versionen > ND7: Entwicklung

VM verwechselt Zuweisung mit Vergleich

(1/2) > >>

Dubidu:
Hallo,
die LotusScript-VM scheint bei einer If-Abfrage eine Zuweisung mit einem Vergleich zu verwechseln.

Hier meine erste Version, die nicht wie gewünscht funktioniert:


--- Code: --- If (tmp = doc.GetItemValue("tfKilometer")(0)) <> "" Then
flag = "Meilen"
doc.tfMeilen = ConvertKMMI(tmp, flag)
Else
If (tmp = doc.GetItemValue("tfMeilen")(0)) <> "" Then
flag = "Kilometer"
doc.tfKilometer = ConvertKMMI(tmp, flag)
End If
End If
--- Ende Code ---

tmp wurde vorher nur deklariert. Somit ist der Wert standardmäßig "".
Die VM interpretiert meinen Code als Vergleich zwischen tmp und doc.GetItemValue("tfKilometer")(0) (das leer ist). Die Anweisung ist erfüllt und die VM geht in die If-Bedingung hinein (das konnte ich alles über den Debugger beobachten!). Anschließend bekomme ich eine Fehlermeldung, da die Funktion ConvertKMMI den String tmp in eine Zahl umwandeln will.

Schreibe ich jedoch folgenden Code, dann funktioniert alles wie gewünscht:


--- Code: ---tmp = doc.GetItemValue("tfKilometer")(0)
If tmp <> "" Then
flag = "Meilen"
doc.tfMeilen = ConvertKMMI(tmp, flag)

...
...
--- Ende Code ---

Gibt es vielleicht doch eine Möglichkeit tmp in der If-Anweisung zu initialisieren?

Liebe Grüße
Giordano

Axel:

--- Zitat von: Dubidu am 20.03.08 - 11:54:03 ---Gibt es vielleicht doch eine Möglichkeit tmp in der If-Anweisung zu initialisieren?

--- Ende Zitat ---

Nein. Du hast hier kein C oder Java oder eine sonstige Hochsprache in der das vielleicht geht.

In LotusScript ist das = - Zeichen sowohl ein Zuwesiungsoperator als auch ein Vergleichsoperator.


Axel


PS: Was ist eine LotusScript-VM?  :-:  Ich kenne nur VMs in VErbindung mit virtuellen Maschinen

koehlerbv:
Nachtrag zu Axel:
LotusScript resp. BASIC verwechselt hier auch nichts, sondern arbeitet absolut definitionsgemäss.
Abgesehen davon kannst Du Dein Ziel ja völlig problemlos erreichen - Du musst nur Zuweisung und Vergleich sorgfältig trennen (was auch der Lesbarkeit des Codes entgegen kommt - würde ich in C auch so machen.

Und was bitte ist "VM"?

Bernhard

MadMetzger:
Ich denke mal, dass er mit VM virtuelle Maschine meint, aber gibt es die in LS überhaupt?

koehlerbv:
Nö.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln