German EVAL bringt immer 0

Air

Member
Licensed User
Longtime User
Hallo zusammen,

irgendwie komme ich mit der EVAL-Funktion nicht klar.

Fakten:
Ich habe in der Variable Formel_l folgendes stehen
(l * 2) + (b * 2) + hr + s

Ich habe in der Variable Formel_b folgendes stehen
h + b

in 5 Textfeldern werden die entsprechenden Daten eingegeben

Zum Schluss soll nun die Formel mit den Daten aud den Feldern berechnet werden. Es kommt aber immer 0 raus

Der Code sieht so aus.
- Getestet mit dem Text Expressions Evaluator Code Module
- Getestet mit der ExpressionEvaluator library

B4X:
Sub btncalc_Click
    Dim e As Evaluator  :  e.Initialize
    Dim l, b, h, hr, s As Double
    Dim e1, e2 As Double

    l  = txtl.Text         'z.B. 600
    b  = txtb.Text       'z.B. 400
    h  = txth.Text       'z.B. 400
    hr = txthr.Text    'z.B. 50
    s  = txts.Text        'z.B. 7

    'Diese Version zum Testen mit der ExpressionEvaluator Library
    e1 = e.Evaluate(Formel_l)
    e2 = e.Evaluate(Formel_b)

    'Diese Version zum Testen mit dem ExpressionsEvaluator Modul
    'e1 = evaluate.MATHTEXT("Formel_l")
    'e2 = evaluate.MATHTEXT("Formel_b")

    lblergebnis.text = "Zuschnittmaß = " & e1 & " x " & e2
end sub

Als Ergebnis sollte kommen:
e1 = 2057
e2 = 800

beides ergibt aber 0

Hab ich hier was übersehen?

Vielen Dank schonmal für Eure Hilfe
 
Last edited:

Air

Member
Licensed User
Longtime User
Nach einigen Stunden hab ich die Lösung selbst gefunden. Klappt nun alles einwandfrei :)

Lösung für die, die es interessiert:

Alle Variablen, die in Formel_l und Formel_b enthalten sind, müssen folgendermassen gesetzt werden.

B4X:
e.SetGlobal("l",txtl.Text)
e.SetGlobal("b",txtb.Text)
e.SetGlobal("h",txth.Text)
e.SetGlobal("hr",txthr.Text)
e.SetGlobal("s",txts.Text)

'Anschliessend kann mit e.EVALUATE gerechnet werden
e1 = e.Evaluate(Formel_l)
e2 = e.Evaluate(Formel_b)
 

DonManfred

Expert
Licensed User
Longtime User
Danke für die Auflösung... Aktuell brauch ichs nicht aber ich hoffe ich finde den Thread wieder wenn dem so ist ;-)
 
Top