TEdit bearbeiten, wieso klappt der Code nicht?
-
Original erstellt von <LESMONA>:
Daher hab ich den Code dochIch wollte eigentlich auf den meiner Meinung nach viel effizienteren Vorschlag mit SetWindowLong hinweisen.
-
Hi!
Nochmal zu dem dritten Punkt. Wär da nicht
if(Edit1->Text.IsEmpty())
wesentlich schneller (Weniger Schritte)?
Außerdem muss man beim Vergleichen immer == verwenden und nicht nur =.
Ts,ts,ts! Junix, wo soll das nur enden?Phips
-
Original erstellt von Jansen:
Ich wollte eigentlich auf den meiner Meinung nach viel effizienteren Vorschlag mit SetWindowLong hinweisen.Dann möchte ich aber nochmal auf die IMHO bessere Variante per Überschreiben von CreateParams() hinweisen.
-
Original erstellt von Phips:
Ts,ts,ts! Junix, wo soll das nur enden?Hööö? was denn?
-junix
-
Er meinte mich.
Von wegen "IsEmpty()", ich habe nicht umsonst geschrieben "ist eine zulässige Möglichkeit". Denn zB. if (Edit1-Text) dürfte noch kürzer/schneller sein.
-
Original erstellt von Jansen:
**Er meinte mich.Von wegen "IsEmpty()", ich habe nicht umsonst geschrieben "ist eine zulässige Möglichkeit". Denn zB. if (Edit1-Text) dürfte noch kürzer/schneller sein.**
"if(Edit1->Text)" geht garned, und wir haben schonmal mit Peter diskutiert, und herausgefunden, dass "if(Edit1->Text.IsEmpty())" schneller ist als "if(Edit1->Text=="")". Soviel zur Erbsenzählerei.
-
Nochmal was zur Erbsenzählerei:
Abfrage ob Edit Feld leer ist. Das ist der Thread mit der "Diskussion" mit Peter.
-
Krass was hier so abgeht
Bin wieder weg, ist ja OT
Wünsche aber trotzdem schon mal schöne Weihnachten
-
Wenn man vom Teufel spricht...
Dir auch alles Gute, Peter.
-
Ups, da hab ich euch velwechsert.
'tschuldigung
-
Du scheinst öfter mal was zu verwechseln.
-
Mir fällt gerade auf das bei diesem Code der "." aber nicht gesperrt wird, wie bekomme ich das auch noch hin?
bei
void __fastcall TRechner::Edit1KeyPress(TObject *Sender, char &Key) { if(Key<'0' || Key>'9' && Key != VK_DELETE && Key != VK_BACK) Key=0; }
Klappt VK_BACK nicht bei
void __fastcall TRechner::Edit1KeyPress(TObject *Sender, char &Key) { if((Key<'0' || Key>'9') && Key != VK_DELETE && Key != VK_BACK) Key=0; }
Geht der Punkt wieder
-
Immernoch das Selbe Klammernproblem...
Dein Obiger code entspricht folgendem:if( Key<'0' || (Key>'9' && Key != VK_DELETE && Key != VK_BACK))
Deshalb wird bei obigem Code alle Bucstaben mit einem ASCII-Code kleiner als der ASCII Code von '0'.
Ich hoffe ich konnte etwas Licht in die Sache bringen (:
-junix
-
Erbarmst du dich und verrätst mir wie das geht? Von AscII hab ich nicht wirklich Ahnung, und ich verstehe auch nicht wieso der . auch geht wenn man
&& != '.' noch in die Klammer packtIch kann klammern wie ich will entweder geht nur das eine oder das andere
-
http://www.google.com/search?sourceid=navclient&ie=UTF-8&oe=UTF-8&q=Operator+Priorit%C3%A4ten+C
Des weiteren würd ich dir empfehlen dringend C/C++ Grundlagen zu Pauken! **)
-junix
*) Wink mit dem Zaunpfahl
**) Deutlicher, gut aber ernst gemeinter Rat
-
Original erstellt von <LESMONA>:
Ich kann klammern wie ich will entweder geht nur das eine oder das andereNein. Ganz sicher gehst du, wenn du um jeden Fall Klammern setzt. Die Fälle sind
Key<'0' || Key>'9' Key != VK_DELETE Key != VK_BACK
Und alle sind mit && verknüpft. Heißt: Wenn Key (kleiner als '0' oder größer als '9') und (nicht VK_DELETE) und (nicht VK_BACK), dann setze Key auf 0.
BTW: Die CreateParams()- bzw. SetWindowLong()-Methode halte ich hier einfach für schlauer. Aber wie du willst.
[ Dieser Beitrag wurde am 19.12.2002 um 22:12 Uhr von WebFritzi editiert. ]