Archief - Visual Basic

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

i386dx

Legacy Member
Ik ben wat aan het prutsen in VB 5.0 (ja, ik weet dat het bucht is, maar het moet nu eenmaal voor school).

Ik zit hier te prutsen met de if then-structuur.
Is het mogelijk om in de conditie een AND te gebruiken? In de helpfile en in mijne boek wordt daar totaal niet over gesproken. Ik kan het wel ingeven en VB lijkt het te accepteren, maar mijn programma gaat totaal de mist in. Apart werken de condities wel, dus ze zijn juist.
Het lijkt mij onwaarschijnlijk dat dit niet zou werken; das toch de basis van de simpelste programmeertaal?

Iemand die kan bevestigen of het al dan niet werkt en of mijn syntax juist is?

Code:
If IsNumeric(EersteTextBox.Text) & EersteTextBox.Text <= 6 Then
  
  hier moet nog wa reutepeteut komen

  ElseIf EersteTextBox.Text = "" Then
    
  Else
    MsgBox ("Geef een waarde in tussen 0 en 6")
  End If

( er moet een getal ingelezen worden tussen 0 en 6, als de gebruiker de textbox leeg laat mag er niets gebeuren, als er een waarde groter dan 7 of bv een letter wordt ingegeven moet de foutmelding op het scherm komen anders moet hij de reutepeteut uitvoeren)

Perponcher

Legacy Member
ik heb nooit met vb5.0 gewerkt, enkel met zijn .NET tegenhanger.

Daar wordt & gebruikt voor concatenatie van strings, And wordt gebruikt in logische structuren. Ik zou dat es proberen.

Iets a la:

If (IsNumeric(EersteTextBox.Text)) And (EersteTextBox.Text <= 6) Then

Ik weet trouwens niet of je een string gewoon kunt vergelijken met een integer. Het is altijd het beste om uw waarde van de textbox naar een getal om te zetten en dan te vergelijken, maar dat is waarschijnlijk inherent aan vb5.0

i386dx

Legacy Member
Perponcher zei:
If (IsNumeric(EersteTextBox.Text)) And (EersteTextBox.Text <= 6) Then

Dit leek mij nogal logisch (had dat ook al gebruikt) maar het werkt dus niet :help:

Cakeman

Legacy Member
i386dx zei:
Dit leek mij nogal logisch (had dat ook al gebruikt) maar het werkt dus niet :help:
Dit is fout: EersteTextBox.Text <= 6
Moet zijn: Int(EersteTextBox.Text) <= 6

Perponcher

Legacy Member
mja, debuggen dan maar he :p

splits die controle eens op in verschillende iffen om te zien tot hoever hij komt

of laat ze op school eens verder evolueren naar een latere versie van vb :D

*edit: ah zoals cakeman het dus post, had het ook verteld in men vorige post*

i386dx

Legacy Member
@cakeman: werkt nog steeds niet

het niet werken even verklaren:
als ik waarde 7 ingeef roept hij mooi de msgbox op (met of zonder diene int)
als ik niets of een letter ingeef krijg ik de melding

Runtime Error 13
type mismatch
vervolgens gaat em naar deze lijn:
If (IsNumeric(txtEerste.Text)) And (Int(txtEerste.Text) <= 6) Then

@perponcher
als ik elke controle apart uitvoer is er geen probeem en werkt alles; alleen moet het dus samenkomen hé...

Cakeman

Legacy Member
De recente programmeertalen gaan de tweede voorwaarde niet controleren wanneer de eerste false is en er AND gebruikt is. VB5 blijkbaar nog wel...

Code:
If IsNumeric(txtEerste.Text) Then
  Select Case Int(txtEerste.Text)
    Case > 0
      MsgBox("Te klein")
    Case < 6
      MsgBox("Te groot")
    Case Else
      MsgBox("OK!")
  End Select
End If

Japy

Legacy Member
Cakeman zei:
De recente programmeertalen gaan de tweede voorwaarde niet controleren wanneer de eerste false is en er AND gebruikt is. VB5 blijkbaar nog wel...

Code:
If IsNumeric(txtEerste.Text) Then
  Select Case Int(txtEerste.Text)
    Case > 0
      MsgBox("Te klein")
    Case < 6
      MsgBox("Te groot")
    Case Else
      MsgBox("OK!")
  End Select
End If

als het groter is dan nul ist ook kleiner dan 6, dus als ge een getal van 0 tot 6 ingeeft blijft em te klein zeggen !

Perponcher

Legacy Member
Conclusie, vb5.0 kent niet het kortsluitingsprinciepe -> met verschillende iffen werken blijft de oplossing

Obliv`

Legacy Member
nope, is niet nodig in vb

alleen in de zogenaamde symbolen talen (java, js, php,...) worde er normaal breaks gebruikt

Cakeman

Legacy Member
Japy zei:
als het groter is dan nul ist ook kleiner dan 6, dus als ge een getal van 0 tot 6 ingeeft blijft em te klein zeggen !
Oops, moest < 0 zijn :)

iTeRuMs: wanneer één case klopt, dan slaat VB de rest gewoon over.

Obliv`

Legacy Member
Code:
If IsNumeric(txtEerste.Text) Then
  Select Case Int(txtEerste.Text)
    Case < 0
      MsgBox("Te klein")
    Case > 6
      MsgBox("Te groot")
    Case Else
      MsgBox("OK!")
  End Select
End If

zo moet het zijn, > en < stonden verkeerd
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan