Falsche Eingabe Ziffern und nicht Buchstaben!!!
-
-
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
-
Hey ich plane irgendwie diese simple IF anweisung nicht...
if((Key<'0' || Key>'9') && Key!=8)
=bedeutet für mich WENN Schlüssel kleiner als die ZAhl oder Wer 0 ist ODER Schlüssel Größßer als 0 ist (das ist ja klar) aber was soll UND Schlüssel UNGLEICH 8 hä ?
-
8 == Rückwertsleerzeichen sprich Backspace
-
Key bedeutet im englischen Sprachgebrauch im Allgemeinen auch "Taste" (vgl. Keyboard)
Ausserdem wäre es wohl auch sinnvoll, wenn du dir darüber gedanken machen würdest, woher "Key" überhaupt kommt? Eventuell findest du da wohl was in der Doku zum verwendeten Event? Wer weiss?
-junix
-
Alles klar ....
das heist die IF anweisung ist klar ... demnach also nur zahlen von 0 - 9 möglich
Gudie demnach ist auch kein Komma Möglich mag mir eventuel das jemand sagen ?ICh weiß ich habe nee lange LEitung ....
aber danach bin ich ferig mit meinem Barcode Berechnungsprogramm...
-
Hey ihr vielen netten LEute ich möchte nicht das ich wegen meinen Fragen schlechte Kritik für euer Forum bekommt. schmeißt meine unqualifizierten Fragen ruhig raus. Easy hauptsache das Forum bleibt generell am start!!!
-
Ich will ja nicht mäkeln, aber wenn Du ein Barcodeberechnungsprog hingekriegt hast wirst Du wohl auch dieses if so hingebogen bekommen, daß auch ein Komma eingebbar ist
-
Naja irgendwie ist die luft raus...sitz da auch schon ein paar tage dran!
Peter, jetzt mal ehrlich du kannst das bestimmt aus dem FF , oder nicht ?
-
Du hast doch folgenden Code aus der FAQ in Dein Prog eingebaut (siehe weiter oben) oder nicht ?
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { if((Key<'0' || Key>'9') && Key!=8) Key=0; }
So, was macht der ?
Wenn die gedrückte Taste kleiner ist als ne '0' oder größer ist als ne '9' (sprich nicht die Ziffern 0-9 beinhaltet) und auch nicht Backspace ist, dann ignoriere diese Taste (Key=0).
Wie könnte man es denn jetzt wohl anstellen, daß auch das Komma nicht ignoriert wird
Übrigens, diese Methode:LONG dwStyle = GetWindowLong( Edit1->Handle, GWL_STYLE); SetWindowLong( Edit1->Handle, GWL_STYLE, dwStyle | ES_NUMBER );
braucht man nur ein einziges Mal aufrufen. Danach akzeptiert das entsprechende TEdit von ganz alleine nur noch numerische Eingaben