![]() |
Abfangen von Fehleingaben
Hallo,
ich möchte gerne in einem Edit-Feld Werte eingeben, und diese dann einem integer zuweisen. wie kann ich fehleingaben wie buchstaben oder ein leeres feld abfangen?
Delphi-Quellcode:
var edit : Tedit;
i : integer; [...] i=strtoint(edit.text); // gibt fehler während der Laufzeit bei falschen eingaben... [...] |
Re: Abfangen von Fehleingaben
Das hatten wir schon oft genug:
try //Zuweisung except end; |
Re: Abfangen von Fehleingaben
Try-Except geht auch, aber Fehler garnicht erst enstehen zu lassen ist viel schöner:
Im OnKeyPress des Edits überprüfen, ob die eingegebene Taste(Key) erlaubt ist. Falls sie nicht erlaubt ist einfach Key #0 zuweisen
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
Var Zahlen:set of Char; begin Zahlen:=['1','2','3','4','5','6','7','8','9','0']; If not (Key in Zahlen) Then Key:=#0; end; |
Re: Abfangen von Fehleingaben
Vielleicht suchst Du die Funktion TryStrToInt aus der Unit SysUtils?
Gruß Hawkeye |
Re: Abfangen von Fehleingaben
@BenjaminH:
Was ist mit negativen Zahlen? Das Vorzeichen sollte natürlich nur vorne stehen... |
Re: Abfangen von Fehleingaben
Hallo,
ich würde direkt auch nur die EINGABE zulassen, welche schon die gültigen Werte enthält. Suchwort wäre hier wohl -> OnKeyPress Codebeispiel könnte für Zahlen wie folgt aussehen:
Delphi-Quellcode:
Das ganze ins OnKeyPress-Event hinterlgen und fertig.
procedure TmyProg.Integer_Edit_Press(Sender: TObject;
var Key: Char); //allgemeine Sperrung von allen Zeichen ausser //Backspace, Enter, Minus und alle Zahlen if not (key in [#8, #13, #45, #48..#57]) then key := #0; begin key := #0; Windows.Beep(2000, 250); end; //Edit-> ich war zu langsam ;-) |
Re: Abfangen von Fehleingaben
genau, das Minuszeichenn nur am Anfang zulassen könnte so gehen:
Delphi-Quellcode:
// das Minus darf nur am Anfang benutzt werden
if (EDIT.selstart <> 0) and (key = #45) then key := #0; |
Re: Abfangen von Fehleingaben
vielen Dank für die antworten, die übrigen keycodes, die mir noch gefehlt haben, konnte ich über die suche finden.
Ist echt ein prima Forum hier, dreifacher daumen hoch! :hello: |
Re: Abfangen von Fehleingaben
oh, ich seh gerade, dass ich einen keycode doch nicht finden konnte, den für die entfernen taste. kann mir jemand damit aushelfen?
und wo ich schon frage, noch eine frage fürs verständnis. warum wird bei
Delphi-Quellcode:
kein key für die ganzen "sondertasten" (enter, backspace, entfernen ect...) ausgegeben?
showmessage(inttostr(ord(key)));
gruß Martin |
Re: Abfangen von Fehleingaben
Weil die keinen haben. Da musst du mit OnKeyDown und den VirtualKeys arbeiten. Da kannst du die aber auch nicht abfangen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz