[Delphi]In If-statement waarden controleren

Pagina: 1
Acties:

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12:09
Heb een probleem, ik wil in een if statement kijken of de waarde uit een TEdit naar een integer converteerbaar is, anders moet ie een foutmelding geven.
Met try...except kan je ook wel zoiets doen, maar dat kan in dit geval niet.

Zoiets als:
code:
1
2
3
4
if StrToInt(CbTafelnr.Text)=integer then
doe iets
else
geef foutmelding;

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 17:27

mulder

ik spuug op het trottoir

if IsNumeric(CbTafelnr.Text) then

oogjes open, snaveltjes dicht


  • BM
  • Registratie: September 2001
  • Laatst online: 19:49

BM

Admin Softe Goederen
Je zou eventueel ook meteen bij het invullen kunnen kijken of het een getal is, of iets anders.
Alleen cijfers toelaten, en als het iets anders is niks invullen.
Heb ooit zoiets gemaakt, kan code zo snel alleen niet vinden :)
Onkeydown, of onkeypress was het iig

Xbox
Even the dark has a silver lining


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12:09
IsNumeric kent Delphi 4 niet.

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12:09
Op zaterdag 18 mei 2002 21:23 schreef SpeedAddict het volgende:
Je zou eventueel ook meteen bij het invullen kunnen kijken of het een getal is, of iets anders.
Alleen cijfers toelaten, en als het iets anders is niks invullen.
Heb ooit zoiets gemaakt, kan code zo snel alleen niet vinden :)
Onkeydown, of onkeypress was het iig
Ik zou eerlijk gezegd niet weten hoe ik dat moet doen.

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Op zaterdag 18 mei 2002 21:46 schreef FallenAngel666 het volgende:
Ik zou eerlijk gezegd niet weten hoe ik dat moet doen.
Neem een SpinEdit.

Siditamentis astuentis pactum.


  • BM
  • Registratie: September 2001
  • Laatst online: 19:49

BM

Admin Softe Goederen
[code]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key<'0') or (key>'9') then
begin
key:=' ';
showmessage('alleen nummers');
end;
end;
[code]
zoiets zou het moeten zijn.
Dit is dan voor keypress op een formulier, maar een editbox heeft een zelfde optie.

edit:

ff betere code gezocht, geeft nu een spatie als er geen nummer ingevuld is, weet zo snel niet hoe je niks invult.

Xbox
Even the dark has a silver lining


  • Delpix
  • Registratie: September 2001
  • Laatst online: 27-11-2021

Delpix

Alanis Fan

code:
1
2
3
  for x := 1 to Length(getal1) do
    if Getal1[x] in ['1','2','3','4','5','6','7','8','9','0'] = false then
    Caption := 'waarde kent meer dan alleen getallen.';

...beter bekend als AMFan


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12:09
Op zaterdag 18 mei 2002 22:22 schreef Delpix het volgende:
code:
1
2
3
  for x := 1 to Length(getal1) do
    if Getal1[x] in ['1','2','3','4','5','6','7','8','9','0'] = false then
    Caption := 'waarde kent meer dan alleen getallen.';
Thanx!
Het klopt nog niet helemaal, want als de stringwaarde van getal1 een nummer bevat (bijv de waarde ditiseenwaarde123test) dan wordt die doorgelaten.
Waardes die geen nummer bevatten worden in iedergeval niet doorgelaten.
Ik ga hier eens mee werken.
Thx!

  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

:Z
code:
1
2
3
4
5
6
7
8
9
10
begin
  try
    StrToInt(CbTafelnr.Text);
  except
    on EConvertError DO
    Geef Error;
    Abort; // Breek huidige procedure af indien fout
  end;
  doe iets;
end;

En nu mag jij me vertellen waarom dit niet zou werken...

[edit]
code:
1
2
3
4
5
6
7
8
9
10
11
Function IsAlleenNummers(instring:string):boolean;
var IsOnlyNr : boolean;
    i     : integer;
begin
  IsOnlyNr := True;
  IF Length(instring) = 0 then IsOnlyNr := False;
  for i := 1 to Length(instring) do
    if NOT (instring[i] in ['1','2','3','4','5','6','7','8','9','0']) then
    IsOnlyNr:=FALSE;
  Result := IsOnlyNr;
end;

Werkt ook. Hoe je die functie gebruikt wijst zich vanzelf :)

Forget your fears...
...and want to know more...


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12:09
Omdat ik bij het drukken op een knop de inhoud van 2 Comboboxes moet controleren alvorens de inhoud van die comboboxes als value in een insert query wordt gezet.
Dus als de 1e combobox of de 2e combobox bij het drukken op de knop een ongeldige waarde bevat moet de melding komen.

  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

Is me nog niet duidelijk waarom dat niet dmv de EConvertError kan...

Forget your fears...
...and want to know more...


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12:09
Ik krijg de code niet verzonnen met die try...except, geneste if combinatie. Heb er al een hele tijd op zitten kijken.

  • Wouter Tinus
  • Registratie: Oktober 1999
  • Niet online

Wouter Tinus

Whee!

Gewoon Val(); gebruiken, zoek maar even in de help :).
procedure Val(S; var V; var Code: Integer);

Description

Val converts the string value S to its numeric representation, as if it were read from a text file with Read.

S is a string-type expression; it must be a sequence of characters that form a signed real number.

V is an integer-type or real-type variable. If V is an integer-type variable, S must form a whole number.

Code is a variable of type Integer.

If the string is invalid, the index of the offending character is stored in Code; otherwise, Code is set to zero. For a null-terminated string, the error position returned in Code is one larger than the actual zero-based index of the character in error.

Val performs range checking differently depending upon the setting of the $R compiler directive and the type of the parameter V.

Professioneel Hyves-weigeraar

Pagina: 1