Falsche Eingabe Ziffern und nicht Buchstaben!!!
-
Seit gegrüßt ihr GÖTTER DER Hochsprache C++...
Ich bin Admin bei einer Firma und programmiere gerade ein programm, allerdings sind meine Mitarbeiter so dumm, das sie anstatt einer Zahlen Eingabe...eine Buchstaben eingabe machen... Wie bekomme ich das ordentlich sauber hin !?!?
MfG
-
hat man gerade hier http://www.c-plusplus.net/forum/viewtopic.php?t=50437 gefragt
-
schon mal die suchfunktion benutzt bzw. im FAQ nachgesehen?
-
Hi,
ein bißchen unspezifisch ist Deine Frage schon. Wie kann der Benutzer denn die Zahl eingeben; in einer Edit-Box?
Wenn ja, kann Du die Umwandlung folgendermaßen angehen:
Edit1->Text.ToInt()
bzw.
Edit1->Text.ToDouble()
Falls der Benutzer nun einen Text eingegeben hat, gibt es zwei Möglichkeiten dies abzufangen:
1. Du könntest mit einer Funktion überprüfen, ob der eingegebene Text eine Zahl ist. Ich bin mir nicht ganz sicher, aber ich glaube, es gibt eine Funktion "IsNumeric(char *c)"
Dann könntest Du folgendes tun:int a; if (IsNumeric(Edit1->Text.c_str()) a = Edit1->Text.ToInt(); else a = 0;
2. Du könntest den Fehler, der bei dem Versuch einen Text umzuwandeln, der keine Zahl darstellt, abfangen:
int a; try { a = Edit1->Text.ToInt(); } catch ( ... ) { a = 0; };
In beiden Fällen wird in a 0 gespeichert, wenn die Umwandlung nicht möglich ist.
-
1. ist die farge gar nicht so "unspezifisch". die wurde hier shon tausend mal gestellt und beantwortet.
2. ich kenne keine Funktion IsNumeric(char *c), sondren eine IsNumeric(char c) von Indy-Packet, wenn ich mich nicht täusche. und damit ist dein bsp. hin.
-
Sorry, wie ich bereits geschrieben hatte, glaubte ich mich zu erinnern, daß es diese Funktion gibt, aber wahrscheinlich verwechsle ich das gerade mit einer der unteren Programmiersprachen (->Visual Basic).
-
Hey das werde ich jetzt erstmal ausgiebig ausprobieren , es ist auf jeden fall richtig das ich mehrere EDIT eingaben mit den nicht eingeben von Buchstaben abfangen MUSs...vielen Dank ihr Hochsprach Giganten
-
warum setzt du deinem eingabefeld nicht ne numerische maske auf (siehe maskedit)?
-
-
Hey ich glaube ich habe eine lange leitung; es klappt garnix ....
so sieht es bei mir bis jetzt aus ...
void __fastcall TForm1::Edit1Change(TObject *Sender) { int a; try { a = StrToInt(Edit1->Text); } catch(...) { ShowMessage ("Bitte geben sie unbedingt Ziffern ein [0-9] ein,danke!"); } if (Edit1->Text.IsEmpty()) { Edit1->Text = "0"; } }
-
...schön. Und jetzt? "klappt nix" ist keine gültige Fehlerbeschreibung. Als "Admin" sollte man sich dessen doch wohl bewusst sein?
-junix
-
vielleicht ist das ein besserer einsatz !???
void __fastcall TForm1::Edit1Change(TObject *Sender) { float a; a = StrToFloat(Edit1->Text); if (a!='1'||a!='2'||a!='3'||a!='4'||a!='5'||a!='6'||a!='7'||a!='8'|| a!='9'||a!='0') { ShowMessage ("Bitte geben sie unbedingt Ziffern ein [0-9] ein,danke!"); } if (Edit1->Text.IsEmpty()) { Edit1->Text = "0"; } }
-
***grunz*** Da gefällt mir der Lösungsvorschlag von "Happy Builder" im entsprechenden FAQ-Artikel doch wesentlich besser
-
das ist absoluter quark weil die zahlen ja im positven sinn beliebig gr0ß seien dürfen !!! Oh mann ausserdem ISt mein start wert auf 0,4 gesetzt und hat mit dem integer nicht hin !
Fuck ich glaube ich dreh gleich durch ..
-
Statt hier sinnlos rumzubasteln, solltest du vielleicht
a) mal die antworten lesen
b) die Frage beantworten
c) die verlinkten Threads lesen
-junix
-
so das hab ich im andren post gepostet und trifft hier auch zu :
void SetIntEdit(TEdit* plEdit) { // ... Nur Ganzzahlige Zahlen erlaubt SetWindowLong(plEdit->Handle, GWL_STYLE, GetWindowLong(plEdit->Handle, GWL_STYLE) | ES_NUMBER); }
-
Lest doch einfach mal in der FAQ nach und erweitert die entsprechende Routine um das Komma oder den Punkt und schon ist alles wunderbar
-
HEy ich habe mir nen Tee reingezogen und ruhig weiter ausprobiert....
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { if((Key<'0' || Key>'9') && Key!=8) Key=0; }
eingefügt und siehe da der benutzer ist nicht mehr im stande zahlen einzugeben!!!!
Sauber; aber und jetzt der daraus resultierende Fehler. ich muss mit Komma stellen arbeiten !!! Wie mach ich das ?
-
Hey Peter deinen Eintrag habe ich eben noch nicht gelesen gehabt, das wert der richtige weg sein .... hmmm
-
Lies die verdammten Posts, oder ich mach hier zu wegen Merkbefreitheit! Wurde alles besprochen, genau so wie in dem auf der ersten Seite erwähnten Thread.
-junix