Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Abfangen von Fehleingaben (https://www.delphipraxis.net/66674-abfangen-von-fehleingaben.html)

happyaura 2. Apr 2006 14:29


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...
[...]

3_of_8 2. Apr 2006 14:34

Re: Abfangen von Fehleingaben
 
Das hatten wir schon oft genug:

try
//Zuweisung
except
end;

BenjaminH 2. Apr 2006 14:38

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;

Hawkeye219 2. Apr 2006 14:39

Re: Abfangen von Fehleingaben
 
Vielleicht suchst Du die Funktion TryStrToInt aus der Unit SysUtils?

Gruß Hawkeye

Hawkeye219 2. Apr 2006 14:41

Re: Abfangen von Fehleingaben
 
@BenjaminH:
Was ist mit negativen Zahlen? Das Vorzeichen sollte natürlich nur vorne stehen...

juergen 2. Apr 2006 14:48

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:
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;
Das ganze ins OnKeyPress-Event hinterlgen und fertig.

//Edit-> ich war zu langsam ;-)

juergen 2. Apr 2006 14:51

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;

happyaura 2. Apr 2006 15:09

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:

happyaura 2. Apr 2006 15:18

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:
showmessage(inttostr(ord(key)));
kein key für die ganzen "sondertasten" (enter, backspace, entfernen ect...) ausgegeben?
gruß Martin

3_of_8 2. Apr 2006 15:19

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 10:35 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz