Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Texttyp eines editFelds prüfen
AceTheFace - So 05.01.03 23:18
Titel: Texttyp eines editFelds prüfen
Hi,
wenn ein user in mein editFeld (Integer)-Zahlen eintippt und ich den Inhalt in eine DB schreiben will, kommt eine eConvertError-Exception, da meine DB in der Spalte nur Strings haben will (soll ja so sein *g*!).
Aber Exceptions im fertigen Programm sind ja nicht sehr schön, deshalb will ich es jetzt so machen, dass sobald der User ein Zeichen eintippt, geprüft wird, ob das ein String oder eine Integerzahl ist. Wie mache ich denn das?
Ich dachte daran, es einfach mal so zu probieren:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function TForm1.checkInput(edit:TEdit):boolean; var zahl:Integer; begin try zahl:=StrToInt(edit.text); result:=true; except result:=false; edit.text:=''; end;
end; |
Leider wirft er trotzdem die gleiche exception (warum eigentlich? Müssten doch alle exceptions abgefangen werden...)
Dies Funktion soll immer über das onChange-Ereignis des EditFelds aufgerufen werden.
Kann mir jemand helfen?
Gruss und danke,
Ace
[/code]
Christian S. - So 05.01.03 23:29
Wenn Du Dein Programm in Delphi startest, werden auch die Exceptions angezeigt, die in try-except-Blöcken stehen. Versuch' mal, das Programm außerhalb von Delphi laufen zu lassen und guck dann, ob die Exceptions noch da sind. Soltlen eigentlich nicht.
Man kann auch irgendwie ausstellen, dass die Exceptions in Delphi angezeigt werden. Ich habe leider vergessen, wie das geht, bin mir aber ziemlich sicher, es hier im Forum mal gelesen zu haben.
MfG,
Peter
Wolff68 - So 05.01.03 23:56
Um zu prüfen, ob es ein Integer ist hab ich mir mal folgende Funktion gebastelt:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function TMainForm.IsValidInteger(s: String): Boolean; var i : integer; begin result := false; IF length(s) = 0 then exit; IF NOT (s[1] in ['-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']) then exit; For i := 2 to length(s) do begin IF NOT (s[i] in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']) then begin result := false; exit; end; end; result := true; end; |
Vielleicht kannst das ja gebrauchen.
AceTheFace - Mo 06.01.03 00:00
Einmal Copy-Past und ein riesen Dankeschön!! :D
Gruss,
Ace
Anonymous - Mo 06.01.03 09:34
| AceTheFace hat folgendes geschrieben: |
| Einmal Copy-Past und ein riesen Dankeschön!! :D |
Nicht zu früh freuen: Rufe die Funktion mal nur mit dem Parameter '-' auf. Die Funktion liefert in diesem Fall True zurück. Ein nachfolgender Aufruf von StrToInt liefert eine Exception.
Du solltest eher den Borland-Funktionen VAL oder StrToIntDef vertrauen.
Gruß Tom
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!