Hallo,
hier noch eine Variante von mir:
Delphi-Quellcode:
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;
Daß break im 1. if-Zweig dient dazu, bei mehreren "falschen" Zeichen im Edit-Feld nur einmal die Fehlermeldung auszugeben.
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