*rechnen* mit Edit1 Komponente ?



  • Hallo,

    der Titel klingt vielleicht etwas merkwürdig... In der Edit1 Komponente soll man eine "Rechenaufgabe" schreiben können z.B. 4 / 2 usw., wo das Ergebnis der "Rechenaufgabe" in der Panel1 Komponente "auftauchen" soll ..

    Code:

    if(Edit1->Text.AnsiPos(Edit1->Text / Edit1->Text) > 1)
    Panel1->Caption = StrToInt (Edit1->Text);
    

    Das Programm lässt sich zwar probemlos compilieren nur wenn ich eine Rechenaufgabe in die Edit1 - Komponente schreibe, kommt folgende Fehlermeldung:

    Variante des Typs (String) konnte nicht in Typ (Integer) konvertiert werden!
    

    ... Warum ?

    Gruß
    Harry



  • du willst einen parser, mit dem zu den string zerlegst und stueckweise berechnest.

    oder du lernst ne scriptsprache. die haben im gegensatz zu C/C++ meistens ein eval().



  • Hi,

    könnte man das nicht irgendwie anders machen ?

    MFG



  • Hallo

    Nein. Weder C++ noch die VCL haben einen eingebauten mathematischen Parser. Entwede schreibst du dir selber einen oder benutzt eine externe Library, die du im Netz suchen kannst.

    bis bald
    akari



  • Hallo *Harry*
    Vielleicht hilft dir das.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
        Panel1->Caption =(String)StrToInt(Edit1->Text.SubString(1,
        Edit1->Text.AnsiPos("/")-1) )
                   /
            StrToInt
            ( Edit1->Text.SubString(Edit1->Text.AnsiPos("/")+1,
            Edit1->Text.Length()-Edit1->Text.AnsiPos("/")+1) );
    
    }
    

    Sieht nicht schön aus.Ich weis.

    MfG Schlumpi.



  • Hallo,

    der Code ist auf den ersten Blick etwas unübersichtlich funktioniert theoretisch aber, jedoch kommt folgende Fehlermeldung:

    Abnormal Program termination!
    

    Gruß



  • StrToInt 
            ( Edit1->Text.SubString(Edit1->Text.AnsiPos("/")+1, 
            Edit1->Text.Length()-Edit1->Text.AnsiPos("/")+1) );
    

    letzte Zeile:
    Edit1->Text.Length() => 3
    Edit1->Text.AnsiPos("/")+1 => 3
    Damit ist die Länge des SubStrings = 0.
    StrToInt dürfte somit eine Exception auslösen.
    Gruß,
    Christian


Anmelden zum Antworten