Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Editbox funktion gesucht (https://www.delphipraxis.net/90494-editbox-funktion-gesucht.html)

NDR 18. Apr 2007 15:05


Editbox funktion gesucht
 
hi @all!
hab ein problem mit dem onchange-ereignis bei delphi 7...
hab hier ein programm geschrieben wo eine eingabe in einem editfeld mit einen ergebnis aus einer rechenaufgabe verglichen werden soll...
wenn das programm startet läuft alles... aber wenn man den eintrag wieder löscht gibts ne fehlermeldung ( '' ist kein gültiger integer wert).
Hab mir jetzt so gedacht das man dort einen zahlenwert automatisch einträgt, zb. 000, der dann "unsichtbar" ist oder den man überschrieben kann... gibt es eine möglichkeit das so irgendwie zu machen oder ganz anders???

hier noch ein bissel quellcode bzgl des problems:
Delphi-Quellcode:
procedure TForm1.Edit3Change(Sender: TObject);
begin
 if strtoint(edit3.text)=x then          //x ist hier der zahlenwert, mit dem verglichen werden soll...
  label7.Caption:='Richtig!'
 else
  label7.Caption:='?';
end;
schon mal vorab danke!
da NDR

mkinzler 18. Apr 2007 15:08

Re: Editbox funktion gesucht
 
-Prüfe vor der konvertierung auf "Leersein"
-Verwende Val() oder TryStrToInt() statt StrToInt()

NDR 18. Apr 2007 15:12

Re: Editbox funktion gesucht
 
und wie würde das denn jetzt genau aussehen??? mach delphi auch eher hobbymäßig und wegen der schule und kenne diese prozedure nicht...

J.P. 18. Apr 2007 15:16

Re: Editbox funktion gesucht
 
Ich würde das so, total simpel und ohne andere Prozedure machen,
einfach mit nem try...except block.
Delphi-Quellcode:
procedure TForm1.Edit3Change(Sender: TObject);
begin
try
 if strtoint(edit3.text)=x then          //x ist hier der zahlenwert, mit dem verglichen werden soll...
   label7.Caption:='Richtig!'
 else
   label7.Caption:='?';
except //Falls die Fehlermeldung kommt, wird label7 auch auf '?' gesetzt
 label7.Caption:='?';
end;
end;
vll ein ganz klein wenig umständlich, aber auch nur ein bischen.
;-)

edit: Delphi Syntaxfehler meinerseits berichtigt.

Klaus01 18. Apr 2007 15:18

Re: Editbox funktion gesucht
 
Delphi-Quellcode:
procedure TForm1.Edit3Change(Sender: TObject);
begin
if edit3.text <> '' then
  begin
    if strtoint(edit3.text)=x then          //x ist hier der zahlenwert, mit dem verglichen werden soll...
      label7.Caption:='Richtig!'
    else
      label7.Caption:='?';
  end;
end;

Aber bedenke, dass das onChange Ereignis immer ausglöst wird wenn
sich in den Text etwas ändert, also bei jedem Tastendruck.

Grüße
Klaus

NDR 18. Apr 2007 15:26

Re: Editbox funktion gesucht
 
danke danke!!!
die variante von klaus01 funzt^^ *verbeug*
problem gelöst^^

mkinzler 18. Apr 2007 15:40

Re: Editbox funktion gesucht
 
Dann gib mal was anderes wie ne Zahl ein.

J.P. 18. Apr 2007 15:44

Re: Editbox funktion gesucht
 
Wenn PEBKAC auftritt, ist meine version besser. Also, wenn Buchstaben anstatt Zahlen eingegeben werden... :p

mkinzler 18. Apr 2007 15:48

Re: Editbox funktion gesucht
 
Ich würde aber, wie weiter oben schon erwähnt, dir TryStrTo...-Versionen dem Exception-Handler vorziehen.

Klaus01 18. Apr 2007 15:50

Re: Editbox funktion gesucht
 
Zitat:

Zitat von mkinzler
Dann gib mal was anderes wie ne Zahl ein.

Na, vielleicht hat er ja noch dieses in seinem Code:

Delphi-Quellcode:
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9',#8]) then
    key:=#0;
end;
Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 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