Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Prüfen ob Edit.Text einen Integer-Wert enthält (https://www.delphipraxis.net/104443-pruefen-ob-edit-text-einen-integer-wert-enthaelt.html)

Jonelmeier 4. Dez 2007 11:59


Prüfen ob Edit.Text einen Integer-Wert enthält
 
Hi!

Ich hab grade ein kleines Problem, an dem ich einfach nicht weiterkomme...
Ich habe auf meiner Form ein Edit-Feld, in das ein Integer-Wert eingegeben werden soll.
Wie kann ich prüfen, ob die eingegebene Zahl ein Integer ist? Bei zu großen Zahlen bekomme ich immer die Meldung, wenn ich versuche die Zahl mit StrToInt umzuwandeln:
---------------------------
Umrechner
---------------------------
'45654674765756756756756767' ist kein gültiger Integerwert.
---------------------------
OK
---------------------------
Kann ich das prüfen, ohne das ich diese Meldung bekomme?
Wäre dankbar für einen kleinen Rat!

Jonelmeier

Aurelius 4. Dez 2007 12:08

Re: Prüfen ob Edit.Text einen Integer-Wert enthält
 
Das geht glaube mit
Delphi-Quellcode:
if trystrtoint(edit1.text) then...

RavenIV 4. Dez 2007 12:11

Re: Prüfen ob Edit.Text einen Integer-Wert enthält
 
Die eingegebene Zahl ist grösser als ein Integer, daher die Fehlermeldung.
StrToInt und TryStrToInt können nur mit Integer umgehen.

Ich würde Dir ein TMaskEdit empfehlen. Hier kannst Du vorgeben, dass nur Zahlen eingegeben werden können.

Oder Du prüfst jeden "Buchstaben" des Strings auf Integer.
Delphi-Quellcode:
for i:=.... do
begin
  Erfolg := TryStrToInt(EdZahlen.Text[i], Zahl);
  if not Erfolg then
  begin
    Break;
  end;
end;

oldmax 4. Dez 2007 12:19

Re: Prüfen ob Edit.Text einen Integer-Wert enthält
 
Hi
Drei Möglichkeiten fallen mir da sofort ein:
1. Ereignis OnKeyPress : Nur Ziffen bis zu einer bestimmten Länge durchlassen

Delphi-Quellcode:
Procedure MyForm.Edit1keypress(Sender: Tobject; Var Key: Char);
Begin
  if (Key<'0') or (Key>'9') or (Length(Sender as TEdit).Text< n) then Key:='';
end; // evtl. mußt du die Steuerzeichen noch durchlassen....
2. Vor Wandlung Stringlänge abfragen und evtl. anmeckern
Delphi-Quellcode:
...
If Length(Edit1.Text)< n then gueltig :=true else Gueltig:=False;
If Güeltig then
begin
  Prüeftext:=Edit1.Text;
  For i:=1 to Length(Prueftext) do if (Prueftext[i]<'0') or (Prueftext[i]>'9') then Gueltig :=False;
end;
if Gueltig then x:=StrToInt(Edit1.Text);// zugegeben, sehr umständlich
...
und dann geht noch try ... except

Über weitere müßte ich noch nachdenken....
Gruß oldmax

Jonelmeier 4. Dez 2007 12:20

Re: Prüfen ob Edit.Text einen Integer-Wert enthält
 
@xX0815Xx:
Danke, funktioniert wunderbar!!! Die Funktion ist komischerweise in meiner Delphi-Hilfe nicht aufzufinden ;-)

@RavenIV:
Wenn ich das ganze mit TryStrToInt versuche bekomme ich keine Exception wenn die Zahl zu groß ist...auch wenn ich eine Real oder Extended Zahl in das Edit schreibe, bekomme ich trotzdem keine Exception! Die Funktion liefert dann nur False zurück...
Funktioniert also genau so wie ich wollte!!!

@oldmax:
Sorry, das ich dich erst übersehen hab! Funktioniert super mit xX0815Xx's MEthode, trotzdem vielen Dank für deine bemühungen, ich werd's mir auf jeden Fall merken!!!
Danke!!!

Jonelmeier


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr.

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