[VB 6.0] hoe inhoud textbox op integer te contoleren?

Pagina: 1
Acties:
  • 194 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • lankras
  • Registratie: Januari 2001
  • Laatst online: 20-04 21:22
Weet iemand hoe ik in Visual Basic kan controleren of de invoer die een gebruiker in een textbox zet een integer is? Die mogelijkheid van het invoeren van gebroken getallen moet namelijk uitgesloten worden.

If TypeName(Val(TextBox.Text)) = "String" Then
enzovoorts...

...werkt niet. :|

Acties:
  • 0 Henk 'm!

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 16-06 13:29
Je kan isnumeric() gebruiken hiervoor. Als je echt een integer moet hebben, moet je ook nog ff het getal daarna controleren.

Acties:
  • 0 Henk 'm!

  • lankras
  • Registratie: Januari 2001
  • Laatst online: 20-04 21:22
Supervisor schreef op 11 december 2002 @ 23:47:
Je kan isnumeric() gebruiken hiervoor. Als je echt een integer moet hebben, moet je ook nog ff het getal daarna controleren.
Dat laatste, daar gaat het juist om :)

Als de gebruiker 2,5 invult moet het programma niet verder gaan en een foutmelding geven. Ik heb al geprobeerd om hiervoor

If Val(TextBox.Text) Mod 1 <> 0 Then
enzovoorts...

...te gebruiken, maar dat werkt op een of andere manier niet. Het lijkt me bovendien dat er een handiger manier moet zijn, maar ik ken het commando niet en kan het ook niet vinden in de Help.

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 16-06 13:29
Visual Basic:
1
2
3
4
5
6
7
8
9
Public Function IsInteger(Num As String) As Boolean
    Dim sTest As String, i As Integer
    IsInteger = False
    If IsNumeric(Num) Then
        If Val(Num) = CInt(Num) Then
            IsInteger = True
        End If
    End If
End Function


Zoiets?

[ Voor 3% gewijzigd door Phenomenon op 12-12-2002 00:03 ]


  • lankras
  • Registratie: Januari 2001
  • Laatst online: 20-04 21:22
Supervisor schreef op 12 december 2002 @ 00:00:
Visual Basic:
1
2
3
4
5
6
7
8
9
Public Function IsInteger(Num As String) As Boolean
    Dim sTest As String, i As Integer
    IsInteger = False
    If IsNumeric(Num) Then
        If Val(Num) = CInt(Num) Then
            IsInteger = True
        End If
    End If
End Function


Zoiets?
Ehmmzzz.... nou nee. Want nu rondt ie de ingegeven waarde juist af naar een integer. Ik wil dat het hele feest niet doorgaat als de gebruiker een gebroken getal invoert. Iets als dit:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub cmdStart_Click()

If IsNumeric(TextBox.Text) Then
    If Num <= 0 Then
        MsgBox "Vul een getal in wat groter is dan 0 !", , "Fout"
    ElseIf [Num is een gebroken getal] Then
        MsgBox "Vul een geheel getal in !", , "Fout"
    Else
        Call StartBerekening
    End If
Else
    MsgBox "U kunt alleen getallen invoeren !", , "Fout"
End If

End Sub


De grote vraag is wat er op de plaats van [Num is een gebroken getal] moet staan.

[ Voor 9% gewijzigd door lankras op 12-12-2002 00:12 ]


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 16-06 13:29
Ehh nee hoor. Je roept gewoon de functie aan.
Visual Basic:
1
2
3
If IsInteger(getal) = False Then
  msgbox "GEEN INTEGER"
End If

  • lankras
  • Registratie: Januari 2001
  • Laatst online: 20-04 21:22
Supervisor schreef op 12 December 2002 @ 00:14:
Ehh nee hoor. Je roept gewoon de functie aan.
Visual Basic:
1
2
3
If IsInteger(getal) = False Then
  msgbox "GEEN INTEGER"
End If
Damn, ja natuurlijk.... Het is een functie! Ff over het hoofd gezien. Ach ja het is al laat voor mij :) Mooie oplossing inderdaad.

Thnx!

Anoniem: 14065

En als je een invoermasker maakt dat alleen gehele getallen toelaat? Dat is helemaal een nette oplossing (ik redeneer nu wel vanuit Access).

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 22-01-2024

Korben

() => {};

Anoniem: 14065 schreef op 12 december 2002 @ 01:29:
En als je een invoermasker maakt dat alleen gehele getallen toelaat? Dat is helemaal een nette oplossing (ik redeneer nu wel vanuit Access).
Hoeveel overhead wil je hebben als dit een veel cleanere oplossing is?

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09:46

Crazy D

I think we should take a look.

Xenophage schreef op 12 December 2002 @ 03:31:
Hoeveel overhead wil je hebben als dit een veel cleanere oplossing is?
Voordeel van een masked edit control (of zelf een eigen integer-only textbox :)) is dat je dan ook alleen maar getallen kunt invoeren, wat imho net iets netter staat als achteraf zeggen dat de invoer niet goed is.

Als je trouwens een klein beetje rondzoekt (lees: MSDN) naar de ES_NUMBER edit-box style, scheelt dat weer :) In combinatie met SetWindowsLong kun je de style aanpassen zodat er alleen integers ingevoerd kunnen worden (alleen als je paste kun je nog niet-getallen ingevoerd krijgen, volgens MSDN). Dat is misschien nog een stuk makkelijker :)

Exact expert nodig?


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 22-01-2024

Korben

() => {};

Crazy D schreef op 12 December 2002 @ 10:43:
[...]

Voordeel van een masked edit control (of zelf een eigen integer-only textbox :)) is dat je dan ook alleen maar getallen kunt invoeren, wat imho net iets netter staat als achteraf zeggen dat de invoer niet goed is.

Als je trouwens een klein beetje rondzoekt (lees: MSDN) naar de ES_NUMBER edit-box style, scheelt dat weer :) In combinatie met SetWindowsLong kun je de style aanpassen zodat er alleen integers ingevoerd kunnen worden (alleen als je paste kun je nog niet-getallen ingevoerd krijgen, volgens MSDN). Dat is misschien nog een stuk makkelijker :)
Klopt, maar het is voor gebruikers best frustrerend als je probeert te tikken en dat t dan niet werkt. Want tja, als je er nie bij zet dat t alleen voor nummers is... Vooral n00bs gaan dan waarschijnlijk denken dat hun computer kapot is B)

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 27-05 16:00

curry684

left part of the evil twins

Xenophage schreef op 12 december 2002 @ 14:18:
[...]
Klopt, maar het is voor gebruikers best frustrerend als je probeert te tikken en dat t dan niet werkt. Want tja, als je er nie bij zet dat t alleen voor nummers is... Vooral n00bs gaan dan waarschijnlijk denken dat hun computer kapot is B)
Tis ook niet de bedoeling denk ik dat dit de editbox wordt achter het label 'Uw voornaam' maar achter 'Leeftijd' of zo :)

Ik ben zelf errug fan van intelligente edit-controls die op het moment van typen al bij voorbaat geen foute input toestaan ipv dat je naderhand een lelijke knaller moet geven. Errorwindows veroorzaken veel meer paniek bij de n00bs dan een weigering van input die bij nadere inspectie logisch blijkt te zijn.

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 27-05 16:00

curry684

left part of the evil twins

Crazy D schreef op 12 december 2002 @ 10:43:
Voordeel van een masked edit control (of zelf een eigen integer-only textbox :)) is dat je dan ook alleen maar getallen kunt invoeren, wat imho net iets netter staat als achteraf zeggen dat de invoer niet goed is.

Als je trouwens een klein beetje rondzoekt (lees: MSDN) naar de ES_NUMBER edit-box style, scheelt dat weer :) In combinatie met SetWindowsLong kun je de style aanpassen zodat er alleen integers ingevoerd kunnen worden (alleen als je paste kun je nog niet-getallen ingevoerd krijgen, volgens MSDN). Dat is misschien nog een stuk makkelijker :)
Beetje halfslachtige oplossing dus... wellicht beter om dan meteen WM_KEYDOWN en EN_CHANGE messages af te vangen ter controle van de input.

Professionele website nodig?

Pagina: 1