Array über Eingabe in ein TEdit-Feld berechnen



  • Hallo,

    ich suche eine Möglichkeit ein Array mit einer beliebig eingegebenen Formel in einem TEdit-Feld (z.B. *1,5 + 20) zu berechnen. Kann man ein TEdit-Text direkt als Variable in eine Berechung einfügen, also mit + - * / Zeichen und natürlich den Zahlen.

    sollte ungefähr so aussehen

    inhalt = EditFormel->Text;    //EditFormel = " * 3,14 + 25"
    bild_ausb[i] =  bild_ein1b[i] inhalt;
    

    Grüße Marc



  • Nein, du musst den Ausdruck im Edit selbst parsen, d.h. zerlegen, in Operatoren und Zahlen umwandeln und schliesslich die Berechnung durchführen. Trivial ist das allerdings nicht, zumindest nicht bei etwas komplexeren Formeln.

    Unter dem Stichwort 'parser' bzw. 'matheparser' o.ä. solltest du aber hier in den Foren und/oder über Google einige Beispielklassen finden.



  • Hallo

    sorry, ich kann mit deiner B eschreibung nicht viel anfangen. Ich versuchs mal :
    - Du kannst Berechnungen direkt in den Quellcode eingeben :

    float Value = 4.3; // Punkt statt Komma!
    float Ergebnis = Value * 1.5 + 20;
    

    - Du kannst Rechenwerte in Strings hin- un herkonvertieren :

    float Value;
    AnsiString Text = FloatToStr(Value); // Standardkonvertirung
    AnsiString Text = FloatToStrF(Value, ffFixed, 2, 7); // Feste Konvertierung
    try
    {
      float Value = StrToFloat(Text);
      }
    catch(...)
    {
      // Fehlerbehandlung
      }
    

    Du allen Befehlen findest du sicher einiges in FAQ und BCB-Hilfe...

    /Edit : okay, wenn er wirklich parsen will.

    bis bald
    akari



  • Das Umwandeln von Strings in eine Zahl ist kein Problem. Ich will komplette Formeln eingeben. Habe mir das schon gedacht, dass das nicht so einfach geht. Schade.
    Werde mal unter 'parser' bzw. 'matheparser' nachschauen.


Log in to reply