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 Prüfen, ob Edit nur aus Zahlen besteht (https://www.delphipraxis.net/59233-pruefen-ob-edit-nur-aus-zahlen-besteht.html)

Chrissi91 19. Dez 2005 19:30


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:
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;
Aber er meckert wegen den vielen OR's.

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:.

Ferber 19. Dez 2005 19:35

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;

Amateurprofi 19. Dez 2005 19:56

Re: Prüfen, ob Edit nur aus Zahlen besteht
 
Oder so :

Delphi-Quellcode:
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;
oder so (einschließlich Prüfung auf 24 Bit RGB-Werte)

Delphi-Quellcode:
function IsColorValue(s:String):Boolean;
var v:cardinal; vc:integer
begin
  Val(s,v,vc)
  result:=(vc=0) and (v<=$FFFFFF);
end;

Ferber 19. Dez 2005 20:36

Re: Prüfen, ob Edit nur aus Zahlen besteht
 
'IsColorValue' ist natürlich sehr elegant. :!:

rasi 19. Dez 2005 20:38

Re: Prüfen, ob Edit nur aus Zahlen besteht
 
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

Chrissi91 20. Dez 2005 05:12

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

lord.paddington 5. Jul 2008 14:26

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;

Luckie 5. Jul 2008 14:37

Re: Prüfen, ob Edit nur aus Zahlen besteht
 
Warum nicht IntToStrDef oder TryIntToStr. Oder man lässt nur Zahlen bei der Eingabe zu.

lord.paddington 5. Jul 2008 14:44

Re: Prüfen, ob Edit nur aus Zahlen besteht
 
das würde dann wie aussehen???

mkinzler 5. Jul 2008 14:46

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 22:57 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