![]() |
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:
Das funktioniert soweit auch ganz gut.
...
var s:integer; begin s:= StrToInt(Edit1.text); begin if s < 29 then begin ... end else begin ... end; Nur wie "filtere" ich jetzt die oben genannten Zahlen da raus? Hab schon versucht mit
Delphi-Quellcode:
Aber ich bekomm dann immer ne Fehlermeldung von Wegen zugriffsverletzung usw.
if s = 11 or 27 or 13 or 1 or 3 or 14 or 22 then
Hat also jemand einen besseren Vorschlag, dies zu lösen? mfG Merchator |
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; |
Re: Zahlen im Edit "filtern"
Hey, vielen Dank, hat geklappt!
:corky: Einen schönen Tag noch! |
Re: Zahlen im Edit "filtern"
Hallo Merchator,
deinen Ansatz hattest du so umsetzten können:
Delphi-Quellcode:
aber Helmis ist "schöner" :???:
if ((s = 11) or (s = 27) or (s = 13) or (s = 1) or (s = 3) or (s = 14) or (s = 22)) then
MfG, Bug |
Re: Zahlen im Edit "filtern"
Zitat:
Delphi-Quellcode:
if ((s = '11') or (s = '27') or (s = '13') or (s = '1') or (s = '3') or (s = '14') or (s = '22')) then
|
Re: Zahlen im Edit "filtern"
Zitat:
Delphi-Quellcode:
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.
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; Desweiteren würde ich alle anderen Zeichen abblocken, sprich nur Ziffern zulassen; entsprechende CodeSchnippsel gibt's hier im Forum zur Genüge ;) |
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 |
Re: Zahlen im Edit "filtern"
@Helmi
Zitat:
Zitat:
Bug |
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 |
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 19:53 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 by Thomas Breitkreuz