![]() |
Prüfen, ob Edit nur aus Zahlen besteht
Hallo :hi:,
mit dem hier, wollte ich prüfen, ob sich auch nur Zahlen im Editfeld befinden:
Delphi-Quellcode:
Aber er meckert wegen den vielen OR's.
for i:=1 to length(edit1.text) do
begin if copy(edit1.Text,i,1) <> '0' or '1' or '2' or '3' or '4' or '5' or '6' or '7' or '8' or '9' then showmessage('Die Angaben sind ungültig!'); end; Ich glaube, mal dies gesehen zu haben [0..10], aber wie geht das? Außerdem möchte ich gerne prüfen, ob die Zahlen (Dezimalzahlen) als Farbwerte gültig sind. Beispiel: 67564312 ist als Dezimalzahl für Farbwerte gültig, aber 56578678965984093 nicht ;) Ich hoffe, ich habe mich verständlich genug ausgedrückt :mrgreen:. |
Re: Prüfen, ob Edit nur aus Zahlen besteht
Hi !
Aus meiner Sammlung:
Delphi-Quellcode:
function IsNumeric(s:String):Boolean;
var i:Integer; begin Result:=False; for i := 1 to Length(s) do if (s[i] > '9') or (s[i] < '0') then exit; Result:=True; end; |
Re: Prüfen, ob Edit nur aus Zahlen besteht
Oder so :
Delphi-Quellcode:
oder so (einschließlich Prüfung auf 24 Bit RGB-Werte)
function IsNumeric(s:String):Boolean;
var i:Integer; begin Result:=False; for i := 1 to Length(s) do if not (s[i] in ['0'..'9']) then exit; Result:=True; end;
Delphi-Quellcode:
function IsColorValue(s:String):Boolean;
var v:cardinal; vc:integer begin Val(s,v,vc) result:=(vc=0) and (v<=$FFFFFF); end; |
Re: Prüfen, ob Edit nur aus Zahlen besteht
'IsColorValue' ist natürlich sehr elegant. :!:
|
Re: Prüfen, ob Edit nur aus Zahlen besteht
Hallo,
hier noch eine Variante von mir:
Delphi-Quellcode:
Daß break im 1. if-Zweig dient dazu, bei mehreren "falschen" Zeichen im Edit-Feld nur einmal die Fehlermeldung auszugeben.
function CheckNumericAndColorValue(s:string):boolean;
var i : integer; NumOk, ColOk : boolean; begin NumOk:=True; ColOk:=True; // prüfen ob Eingabe im Bereich 0..9 for i:=1 to length(s) do begin if not (s[i] in ['0'..'9']) then begin NumOk:=False; showmessage('Ungültiges Zeichen im Eingabe Feld!'); break; end; end; // wenn Eingabe ok dann prüfen ob Zahl im Bereich 0..$FFFFFF (=16777215 dezimal) if NumOk and ((StrToInt(s)<0) or (StrToInt(s) > $FFFFFF)) then begin ColOk:=False; showmessage('Zahl liegt außerhalb des gültigen Farbwertes!'); end; Result:=NumOk and ColOk; // gibt True zuück wenn beides in Ordnung war! end; Der 2. if-Zweig wird nur dann ausgeführt wenn der 1. ok war. Soviel ich weiß muß die Farbe im Bereich von 0..16777215 liegen (16777215=$FFFFFF in Hexadezimal) liegen. Also Frage ich einfach nur diesen Bereich ab. Du mußt nur darauf achten daß die Zahleneingabe im Edit-Feld den int64 Wertebereich nicht überschreitet, da es sonst bei der StrToInt-Funktion zu einer Fehlermeldung kommt. int64 Wetebereich: +9223372036854775807 (=$7FFFFFFFFFFFFFFF hex), -9223372036854775808 (=$8000000000000000 hex). Ich hoffe, Dir geholfen zu haben |
Re: Prüfen, ob Edit nur aus Zahlen besteht
Danke an alle, die mir geholfen haben! Das mit dem Zahlen prüfen funtkioniert super! Und mit dem Testen, ob der Farbwert auch gültig ist, habe ich aanders gelöst. Die Farbe wird mit einem Colordialog ausgewählt und automatisch von dort übernommen, d.h. es können kein Fehler kommen. :)
Danke ochmals! Chrissi91 |
Re: Prüfen, ob Edit nur aus Zahlen besteht
...so habe ich es gerade umgesetzt:
Delphi-Quellcode:
try
Memo1.Lines[0]:=Edit1.Text; dummy:=StrToInt(Edit1.Text); except showmessage('ungültige Eingabe'); exit; end; |
Re: Prüfen, ob Edit nur aus Zahlen besteht
Warum nicht IntToStrDef oder TryIntToStr. Oder man lässt nur Zahlen bei der Eingabe zu.
|
Re: Prüfen, ob Edit nur aus Zahlen besteht
das würde dann wie aussehen???
|
Re: Prüfen, ob Edit nur aus Zahlen besteht
Entweder TMaskEdit oder im KeyPress-Event manuell überprüfen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:10 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