*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