Toon posts:

VB6 Controle String

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe kun je in VB6 controleren of een string (bijv. Text1.Text) alleen de waarde A t/m Z of 0 t/m 1 bevat?

Als hij dus bijv. een waarde "056ssd(dfhtt7152" bevat moet er een msgbox komen met de melding: "Het teken "(" mag niet gebruikt worden"

Alvast bedankt.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 21-09 21:55

Gerco

Professional Newbie

Je kunt zoiets doen, al is het niet bijster efficient, met het regexp object is vast iets beters te verzinnen:
code:
1
2
3
4
5
6
7
8
9
10
Const allowed="ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"
Dim str as String
str="12345sdhvkshvks)kljcvkvbk"

Dim i as Integer
For i=1 to Len(str)
  If Instr(allowed,Ucase$(Mid$(str,i,1)))=0 Then
    Msgbox "Het teken """ & Mid$(str,i,1) & """ mag niet gebruikt worden"
  End If
Next i

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Je kan ieder karakter van de string doorlopen en daar bijvoorbeeld de ASCII range hoofdletters = 65-90 van checken
Voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim i     as Integer
Dim strTeken as String
Dim blnFout  as Boolean

For i = 1 to Len(Text1.Text)
  strTeken = Mid(Text1.Text, i, 1)
  If Asc(strTeken) >=65 And Asc(strTeken) <=90 Or (strTeken <> "0" And strTeken <> "1") Then
    ' Ongeldig teken
    blnFout = True
    Exit For
Next i

if blnFout Then
  MsgBox "Het teken " & strTeken & " mag niet gebruikt worden."
End If

:Y)

edit:
Foutje

It’s nice to be important but it’s more important to be nice


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Code klopt nog niet helemaal, maar het idee is dus dat je bij de hoofdletters met een ASCII range gaat checken ;)

It’s nice to be important but it’s more important to be nice


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Nog een tip: Je kan ook met like ranges checken

Bijvoorbeeld:
code:
1
2
3
If strTeken Like [A-Z] or strTeken Like [0-1] Then
  ' Etc
End If

It’s nice to be important but it’s more important to be nice


  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Ik veronderstel dat je de waarde van een invoervak wil controleren?
Kan je gebruik maken van het OnKeyDown-event?

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Op vrijdag 14 september 2001 15:04 schreef Wezen het volgende:
Ik veronderstel dat je de waarde van een invoervak wil controleren?
Kan je gebruik maken van het OnKeyDown-event?
Ik veronderstel dat je hiermee doelt op dat je de toetsaanslagen afvangt en daarmee ervoor zorgt dat ongeldige tekens niet ingevoerd kunnen worden in de textbox?

Daarvoor kun je bijvoorbeeld het keypress event als volgt gebruiken:
code:
1
2
3
4
5
6
7
8
Private Sub Text1_KeyPress(KeyAscii As Integer)

    ' Zorgen dat de gebruiker alleen A-Z 0-1 kan invoeren
    If (Chr(KeyAscii) Like "[A-Z]") = False And (Chr(KeyAscii) Like "[0-1]") = False Then
      KeyAscii = 0
    End If

End Sub

:Y)

It’s nice to be important but it’s more important to be nice


  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

die bedoel ik idd.
Lijkt me gebruikersvriendelijker dan eerst het gehele vak in te typen en na de foutmelding -ofwel de foute tekens eruit te halen - ofwel het zooitje opnieuw in te geven...
Doch dit terzijde...
:)

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 12:02

Crazy D

I think we should take a look.

Vergeet niet de backspace, pijltjes, delete, en dat soort toetsen wel toe te staan...

Exact expert nodig?

Pagina: 1