Edit Feld eingabe vergleichen
-
Vorab Info:
Bin Anfänger, benutzte C++ Borland Builder 6 Englisch.Aufgabe:
Ich möchte ein Programm mit GUI erstellen das Euro in US-Dollar umrechnet. Es soll der Betrag in Euro in einen Edit-Feld eingetragen werden + den €/$ Kurs.
Weiterhin sollen noch 10€ als Wechselgebühr aufkommen. Ausgabe ist dann in ein Edit Feld das gesperrt ist zum schreiben.1. Problem:
Der eingegebene Euro-Betrag muss ja über 10€ sein (Wechselgebühr), da liegt mein Problem.
Bild von GUI und Code:[http://img503.imageshack.us/img503/1586/45141410qd1.th.jpg
Ich kann nicht richtig überprüfen welche betrag eingeben wurde. Ich denke mal das es an den AnsiString liegt. Habe darauf gegooglet nach AnsiString konventieren zu double oder float, bis jetzt kein Erfolg.
Was mich stark wundert warum bei '1' und '10' er in den if geht.2. Frage:
Wie kann man einstellen das er nur 2kommer stellen annimmt (z.B. 50.42€) und die auch wieder 2stellig ausgibt.Hier nochmal den Quellqode als Text:
//--------------------------------------------------------------------------- #include <iostream> #include <string> #include <sstream> #include <vcl.h> #include <conio.h> #pragma hdrstop #include "Unit1.h" #pragma resource "*.dfm" TFrm_main *Frm_main; //--------------------------------------------------------------------------- __fastcall TFrm_main::TFrm_main(TComponent* Owner) : TForm(Owner) { } //LblEdit_betrag------------------------------------------- void __fastcall TFrm_main::LblEdit_betragExit(TObject *Sender) { //Variante 1: betrag <= 10 if(LblEdit_betrag->Text <= 10) MessageBox(Handle,"V1_if","Warnung",MB_OK); else MessageBox(Handle,"V1_else","Warnung",MB_OK); //Variante 2: betrag <= einen anderen edit feld vergleichen wo 10 eingetragen ist if(LblEdit_betrag->Text <= Edit1->Text)//Edit1->Text = 10 MessageBox(Handle,"V2_if","Warnung",MB_OK); else MessageBox(Handle,"V2_else","Warnung",MB_OK); //Bei beiden Varianten kommt raus: 1=if, 2-9=else, 10=if, >10=else } //---------------------------------------------------------------------------Danke erstmal für die Hilfe, ich glaube weitere Fragen werden folgen

MfG Tai
-
In der FAQ des Boards gibt es einen Beitrag "Einmal Zahl nach String und zurück", der sich mit der von dir benötigten Umwandlung beschäftigt.
Strings kannst du normalerweise nicht mit Zahlen vergleichen (und bei Variante 1 bist du vermutlich auf eine implizite Umwandlung int->AnsiString gestoßen). Und Vergleiche unter Strings basieren nicht auf den Zahlenwerten (es ist nichtmal sicher, daß der String überhaupt eine Zahl enthält), sondern auf der lexikografischen Reihenfolge - und die geht 1,10,11,12,13,14,15,16,17,18,19,2,20,21,....
-
Hallo
TEdit::Text gibt einen AnsiString zurück. Und Strings allgemein lassen sich nicht auf größer/kleiner als Zahlen überprüfen. Dazu must du erstmal in einen Zahlentyp umwandeln. Siehe die BCB-Hilfe zu StrToFloat/StrToFloatDef.
Siehe die Komponente TMaskEdit, und FloatToStrF.
3. Das gehört ins Builder-Forum.
4. benutzt bitte beim Posten vom C++ Code hier im Forum auch die C++ Codetags, nicht die Code-Tags.
/Edit : Ich empfehle hier die VCL-Mittel anstelle der C++ Standard-Mittel. Falls du standardkonforme Mittel willst must du auf CStoll hören.
bis bald
akari