Autor Thema: VM verwechselt Zuweisung mit Vergleich  (Gelesen 2388 mal)

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
VM verwechselt Zuweisung mit Vergleich
« am: 20.03.08 - 11:54:03 »
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

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)

...
...

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

Liebe Grüße
Giordano

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: VM verwechselt Zuweisung mit Vergleich
« Antwort #1 am: 20.03.08 - 12:36:23 »
Gibt es vielleicht doch eine Möglichkeit tmp in der If-Anweisung zu initialisieren?

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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: VM verwechselt Zuweisung mit Vergleich
« Antwort #2 am: 20.03.08 - 12:39:30 »
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

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: VM verwechselt Zuweisung mit Vergleich
« Antwort #3 am: 20.03.08 - 12:40:24 »
Ich denke mal, dass er mit VM virtuelle Maschine meint, aber gibt es die in LS überhaupt?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: VM verwechselt Zuweisung mit Vergleich
« Antwort #4 am: 20.03.08 - 12:44:19 »
Nö.

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: VM verwechselt Zuweisung mit Vergleich
« Antwort #5 am: 20.03.08 - 13:07:22 »
Hi,
gut, dann geht das eben nicht! :(

Ja, mit VM meinte ich Virtual Machine. Wenn Lotus Designer den Code tatsächlich in Maschinensprache kompiliert, dann hat es keine VM.

Liebe Grüße
Giordano

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: VM verwechselt Zuweisung mit Vergleich
« Antwort #6 am: 20.03.08 - 13:10:16 »
Wenn Lotus Designer den Code tatsächlich in Maschinensprache kompiliert, dann hat es keine VM.

 ???  ???


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: VM verwechselt Zuweisung mit Vergleich
« Antwort #7 am: 20.03.08 - 13:11:52 »
Wenn Lotus Designer den Code tatsächlich in Maschinensprache kompiliert, dann hat es keine VM.

 ???  ???

 ???

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: VM verwechselt Zuweisung mit Vergleich
« Antwort #8 am: 20.03.08 - 13:13:57 »
Nein. Du hast hier kein C oder Java oder eine sonstige Hochsprache in der das vielleicht geht.
Hm. Java ist keine Hochsprache wie C sondern eher eine gemeinsame Basis von verschiedenen Plattformen  ;D
Zitat
Ja, mit VM meinte ich Virtual Machine. Wenn Lotus Designer den Code tatsächlich in Maschinensprache kompiliert, dann hat es keine VM.
Und ausserdem kompilieren VMs eine Menge Code in Maschinensprache, z.B. über JIT Compiler in der Java VM.  ;D

« Letzte Änderung: 20.03.08 - 13:15:39 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: VM verwechselt Zuweisung mit Vergleich
« Antwort #9 am: 20.03.08 - 13:17:28 »
Um das noch klarzustellen: Der Designer macht beim Speichern von LS-Code eine Precompilation und erzeugt tokenisierten Code. Dieser wird dann vom (OS-abhängig zu Verfügung gestellten) Interpreter zur Laufzeit ausgeführt.
Über den Begriff einer virtual machine werden wird hier sicher nicht debattieren. Gleiches gilt für die Vor- oder Nachteile von BASIC oder LotusScript.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz