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 | 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