Lade...
 

CX_FORMULA::Evaluate3

CX_FORMULA::Evaluate3

Beschreibung:

Diese Funktion berechnet den Wert des Formelausdrucks. Ungebundene Variablen werden mit

SendMsg / WaitOnInput abgefragt. Wenn keine InstantView®-Message angemeldet ist,

wird ein Fehler gemeldet.

Vor dem Triggern der Message werden mindestens 3 Werte auf den Stack gelegt: Für jede Variable ein CX_STRING-Objekt, das den Namen der ungebundenen Variable enthält, ein CX_CONTAINER-Objekt und ein CX_BOOLEAN-Objekt:

Top CX_BOOLEAN: TRUE = neu berechnen, FALSE = Abbruch
Top-1 CX_CONTAINER: Container mit fehlenden Variablen
Top-2 CX_STRING: n. fehlende Variable
... ...
Top-n CX_STRING: 1. fehlende Variable

Das CX_CONTAINER-Objekt enthält in "source.formulaPointer" einen Zeiger auf

das CX_FORMULA-Objekt, das gerade berechnet wird. Andere Funktionen können hier

weitere Daten ablegen, die grundsätzlich den Specifier "source" haben.

Die eingegebenen Werte müssen im Container abgelegt werden, jede Variable in

ihren eigenen Slot (Variablenname = Slotname). Schließlich muss das CX_BOOLEAN-Objekt auf TRUE gesetzt werden, damit die Formel die Werte annimmt.

Bleibt es auf FALSE, wird ein Fehler gemeldet.

Code-Beispiel:

Var(f /* object CX_FORMULA */, b /* object

CX_BOOLEAN */, c /* object CX_CONTAINER */)           
Msg(MISSING_VARIABLE)
CreateTransObject(CX_FORMULA) -> f, (MISSING_VARIABLE) f Call(SetMessage)
"b + 12.5cm" f Put, f Call(Evaluate3)

Prompt(pVar, RED, 11, 33, "")
String(CX_CONTAINER::x~var, 100, 33, 200)
[
  MISSING_VARIABLE: -> b, -> c, Dup PutValue(, pVar) Rename(var, STACK)
  SELECT: c DrainWindow, TRUE b Put, FinishInput

]

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(IN) Top CX_FORMULA die Formel
Stack(OUT) Top CX_CLASS das Ergebnis(-Objekt)
Funktionsaufruf: Call(Evaluate3)

siehe auch SystemObject - Methode SetBindMessage