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 Zahlen im Edit "filtern" (https://www.delphipraxis.net/93218-zahlen-im-edit-filtern.html)

Merchator 2. Jun 2007 17:28


Zahlen im Edit "filtern"
 
Hi!
Ich bins wieder O.o
Ich sitz hier jetzt schon ne Weile und denke über folgendes nach:

Ich habe ein Editfeld. Dort dürfen allerdings nur Zahlen zwischen 0-29 rein.
Allerdings dürfen die Zahlen 1,3,11,13,22,27 auch nicht da rein.

Also ersteres geht ja so
Delphi-Quellcode:
...
var
s:integer;
 begin
 s:= StrToInt(Edit1.text);
   begin
   if s < 29 then
    begin
    ...
   end
  else
  begin
  ...
  end;
Das funktioniert soweit auch ganz gut.
Nur wie "filtere" ich jetzt die oben genannten Zahlen da raus?
Hab schon versucht mit
Delphi-Quellcode:
if s = 11 or 27 or 13 or 1 or 3 or 14 or 22 then
Aber ich bekomm dann immer ne Fehlermeldung von Wegen zugriffsverletzung usw.

Hat also jemand einen besseren Vorschlag, dies zu lösen?

mfG
Merchator

Helmi 2. Jun 2007 17:31

Re: Zahlen im Edit "filtern"
 
Hallo,

so, jetzt hab ich kurz einen kleinen Test gemacht und so gehts:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: String;
  i: Integer;

begin
  s := Edit1.Text;
  i := StrToIntDef(s, 0); //Text in Integer wandeln

  If (i in [1, 3, 11, 13, 14, 22 , 27]) then //prüfen ob die Zahl drin ist
    ShowMessage(Format('%d ist drin!', [i]));
end;

Merchator 2. Jun 2007 17:48

Re: Zahlen im Edit "filtern"
 
Hey, vielen Dank, hat geklappt!
:corky:

Einen schönen Tag noch!

BUG 2. Jun 2007 19:20

Re: Zahlen im Edit "filtern"
 
Hallo Merchator,

deinen Ansatz hattest du so umsetzten können:
Delphi-Quellcode:
if ((s = 11) or (s = 27) or (s = 13) or (s = 1) or (s = 3) or (s = 14) or (s = 22)) then
aber Helmis ist "schöner" :???:


MfG,
Bug

Helmi 2. Jun 2007 19:47

Re: Zahlen im Edit "filtern"
 
Zitat:

Zitat von BUG
Hallo Merchator,

deinen Ansatz hattest du so umsetzten können:
Delphi-Quellcode:
if ((s = 11) or (s = 27) or (s = 13) or (s = 1) or (s = 3) or (s = 14) or (s = 22)) then
aber Helmis ist "schöner" :???:


MfG,
Bug

Wenn dann so:
Delphi-Quellcode:
if ((s = '11') or (s = '27') or (s = '13') or (s = '1') or (s = '3') or (s = '14') or (s = '22')) then

raiguen 2. Jun 2007 20:15

Re: Zahlen im Edit "filtern"
 
Zitat:

Zitat von Merchator
...Dort dürfen allerdings nur Zahlen zwischen 0-29 rein.
Allerdings dürfen die Zahlen 1,3,11,13,22,27 auch nicht da rein....

Um beide Bedingungen zu erfüllen würde ich das so machen:
Delphi-Quellcode:
procedure Button1Click(Sender: TObject);
var i: Integer;
     s: String;
begin
  s := Trim(Edit1.Text);   // evtl. Leerstellen vor und nach dem Eingabetext abschneiden
  i := StrToIntDef(s, 0);

  if ( i in [0..29] ) and ( i not in [1,3,11,13,22,27] ) then
  ...
end;
Empfehlung für die EIngabe: Im ObjektInspektor für das Editfeld die Eigenschaft MaxLength auf 2 setzen, so dass maximal nur eine 2-stellige Zahl eingegeben werden kann.
Desweiteren würde ich alle anderen Zeichen abblocken, sprich nur Ziffern zulassen; entsprechende CodeSchnippsel gibt's hier im Forum zur Genüge ;)

marabu 3. Jun 2007 09:06

Re: Zahlen im Edit "filtern"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

oft ist der möglichst frühzeitige Ausschluss von falschen Eingabewerten die beste Lösung. Bei einem zusammenhängenden Wertebereich 0..29 wäre ein SpinEdit sicher optimal. Da hier aber Lücken vorgegeben sind, würde ich eine ComboBox mit dem Style csDropDownList einsetzen.

Grüße vom marabu

BUG 3. Jun 2007 16:26

Re: Zahlen im Edit "filtern"
 
@Helmi
Zitat:

Wenn dann so:
Delphi-Quellcode:
if ((s = '11') or (s = '27') or (s = '13') or (s = '1') or (s = '3') or (s = '14') or (s = '22')) then

Siehe ersten Beitrag von Merchator:
Zitat:

Delphi-Quellcode:
s:= StrToInt(Edit1.text);

MfG,
Bug

WIng2005 2. Okt 2007 10:16

Re: Zahlen im Edit "filtern"
 
Hallo,

gibt es eine einfachere Methode, ALLE numerischen Werte eines Strings zu filtern,
als Zeichen für Zeichen zu betrachten?

Also:
C123F -> CF

MFG
Steffen

marabu 2. Okt 2007 10:57

Re: Zahlen im Edit "filtern"
 
Hi Steffen,

wenn du so allgemein fragst, dann: Nein. Sobald du ein Muster hast, kann man das berücksichtigen. Aber selbst dann könnte die Überprüfung jedes einzelnen Zeichens noch wirtschaftlicher sein als ein intelligenter Algorithmus - besonders bei kurzen Strings.

Grüße vom marabu


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