stukjecode werkt niet

Status
Niet open voor verdere reacties.

chrisje181

Gebruiker
Lid geworden
23 okt 2008
Berichten
106
Hallo allemaal,

Onderstaand stukje code werkt niet.
Wat het zou moeten doen is als numberTB.text hoger is dan 1001 (1000 mag nog) dan moet hij msgboxen weergeven, alleen hij negeert de heleelseif vak van de hoger dan 1001

Code:
ElseIf numberTB.Text >= "1001" Then
            MsgBox("Je hebt een getal hoger dan 1000 ingevuld")
            MsgBox("Vanwege het feit dat het niet de bedoeling is krijg je 2 minuten korter de tijd!")
            status.counter = status.counter - 120
            numberTB.Text = ""
 
Zet de string eerst om naar een getal. Dan kun je pas kijken of de waarde groter, gelijk, of kleiner is dan 1000.

Anders ben je lengte van een string aan het vergelijken.
 
heb nu dit (even mijn complete if statement) maar het werkt nog niet!

Code:
 Dim raadG As String = numberTB.Text

        If hetGetal.Text > numberTB.Text Then
            GetallenHoger.Items.Add(numberTB.Text)
            numberTB.Text = ""
            Cval = Cval + 1
            timesGuest.Text = Cval
        ElseIf hetGetal.Text < numberTB.Text Then
            GetallenLager.Items.Add(numberTB.Text)
            numberTB.Text = ""
            Cval = Cval + 1
            timesGuest.Text = Cval
        ElseIf hetGetal.Text = numberTB.Text Then
            MsgBox("The number you guessed is the same as the number we choose")
            MsgBox("You have completed level 2!")
        ElseIf Val(raadG) >= "1001" Then
            MsgBox("Je hebt een getal hoger dan 1000 ingevuld")
            MsgBox("Vanwege het feit dat het niet de bedoeling is krijg je 2 minuten korter de tijd!")
            status.counter = status.counter - 120
            numberTB.Text = ""
            Cval = Cval + 1
            timesGuest.Text = Cval
        Else
            MsgBox("Je hebt niks ingevoerd en wel op de knop gedrukt")
            MsgBox("Vanwege het feit dat het niet de bedoeling is krijg je 2 minuten korter de tijd!")
            status.counter = status.counter - 120
            numberTB.Text = ""
            Cval = Cval + 1
            timesGuest.Text = Cval
        End If

en op iedere andere vergelijking werkt het prima! alleen die hoger dan 1001 werkt niet...
 
Omdat je hier (in het rood):

Code:
ElseIf Val(raadG) >= [COLOR="#FF0000"]"1001"[/COLOR] Then

een string aan het vergelijken bent. Alles wat je tussen dubbele aanhalingstekens zet word gezien als een string, oftewel een tekenreeks. Ook al heb je wel getallen ingevuld, het feit dat die getallen tussen aanhalingstekens staan worden die getallen ook als string gezien. Wat je dus moet doen is simpelweg de aanhalingstekens weghalen.

Verder zie ik dat je twee messageboxen achterelkaar laat zien. Kun je die niet beter combineren? Dus bijvoorbeeld dit:
Code:
            MsgBox("Je hebt niks ingevoerd en wel op de knop gedrukt")
            MsgBox("Vanwege het feit dat het niet de bedoeling is krijg je 2 minuten korter de tijd!")

word dit:
Code:
            MessageBox.Show("Je hebt niks ingevoerd en wel op de knop gedrukt" & vbNewLine &
                       "Vanwege het feit dat het niet de bedoeling is krijg je 2 minuten korter de tijd!")

Merk op dat ik hier MessageBox.Show gebruik in plaats van MsgBox.

Als laatste kan je:
Code:
Cval = Cval + 1
verkorten tot
Code:
Cval += 1

Noem het nitpicking, maar wees blij met deze tips. :)
 
Laatst bewerkt:
Code:
 ElseIf Val(raadG) >= 1001 Then
            MsgBox("Je hebt een getal hoger dan 1000 ingevuld")
            MsgBox("Vanwege het feit dat het niet de bedoeling is krijg je 2 minuten korter de tijd!")
            status.counter = status.counter - 120
            numberTB.Text = ""
            Cval = Cval + 1
            timesGuest.Text = Cval

werkt nog steeds niet!!!!!!!!!

en ik zet graag 2 aparte msgboxen neer zodat mijn gebruikers gewoon klein stukje tekst hebben per keer, ook voor de spanning van het wel ofniet halen van het level.
die cval =+ 1 zal ik wel aanpassen zodadelijk
 
Code:
Dim raadG As [COLOR="#FF0000"]String[/COLOR] = numberTB.Text

raadG is nog steeds een string. Dat moet ook een integer zijn.
 
Laatst bewerkt:
dit is de hele actie van de guessbtn, en je code hulp werkt nog steeds niet..........

Code:
Private Sub guessBtn_Click(sender As System.Object, e As System.EventArgs) Handles guessBtn.Click

        Dim raadG As Integer = numberTB.Text

        If hetGetal.Text > numberTB.Text Then
            GetallenHoger.Items.Add(numberTB.Text)
            numberTB.Text = ""
            Cval += 1
            timesGuest.Text = Cval
        ElseIf hetGetal.Text < numberTB.Text Then
            GetallenLager.Items.Add(numberTB.Text)
            numberTB.Text = ""
            Cval += 1
            timesGuest.Text = Cval
        ElseIf hetGetal.Text = numberTB.Text Then
            MsgBox("The number you guessed is the same as the number we choose")
            MsgBox("You have completed level 2!")
            Form1.lvlSuccessLabel.Text = "1"
        ElseIf Val(raadG) >= 1001 Then
            MsgBox("Je hebt een getal hoger dan 1000 ingevuld")
            MsgBox("Vanwege het feit dat het niet de bedoeling is krijg je 2 minuten korter de tijd!")
            status.counter = status.counter - 120
            numberTB.Text = ""
            Cval += 1
            timesGuest.Text = Cval
        Else
            MsgBox("Je hebt niks ingevoerd en wel op de knop gedrukt")
            MsgBox("Vanwege het feit dat het niet de bedoeling is krijg je 2 minuten korter de tijd!")
            status.counter = status.counter - 120
            numberTB.Text = ""
            Cval += 1
            timesGuest.Text = Cval
        End If

        If Cval = "11" Then
            MsgBox("Je hebt meer dan 10 keer geraden zonder het getal te raden!")
            MsgBox("Dit kost je 2 minuten speeltijd!")
            timesGuest.Text = "0"
            Cval = 0
            status.counter = status.counter - 120
        End If

    End Sub
 
nog steeds het sttukje van de 1001 (wat wel proberen op te lossen!!)
 
Hoi,

Ik zou bij alle ElseIfs de inhoud van de textboxen als getal checken:
[CPP] Dim NumberTBGetal As Integer = CInt(numberTB.Text)
Dim HetGetalTBGetal As Integer = CInt(hetGetal.Text)


If HetGetalTBGetal > NumberTBGetal Then
GetallenHoger.Items.Add(numberTB.Text)
numberTB.Text = ""
Cval = Cval + 1
timesGuest.Text = Cval
ElseIf HetGetalTBGetal < NumberTBGetal Then
GetallenLager.Items.Add(numberTB.Text)
numberTB.Text = ""
Cval = Cval + 1
timesGuest.Text = Cval
ElseIf HetGetalTBGetal = NumberTBGetal Then
MsgBox("The number you guessed is the same as the number we choose")
MsgBox("You have completed level 2!")
ElseIf NumberTBGetal = 1001 Then
MsgBox("Je hebt een getal hoger dan 1000 ingevuld")
MsgBox("Vanwege het feit dat het niet de bedoeling is krijg je 2 minuten korter de tijd!")
status.counter = status.counter - 120
numberTB.Text = ""
Cval = Cval + 1
timesGuest.Text = Cval
Else
MsgBox("Je hebt niks ingevoerd en wel op de knop gedrukt")
MsgBox("Vanwege het feit dat het niet de bedoeling is krijg je 2 minuten korter de tijd!")
status.counter = status.counter - 120
numberTB.Text = ""
Cval = Cval + 1
timesGuest.Text = Cval
End If[/CPP]

Dan nog: Dat hele stukje wordt overgeslagen omdat het getal in de numberTB altijd groter, kleiner of gelijk is aan het getal in de hetGetal textbox. Je zal het er apart boven moeten zetten (ook in mijn code zal het dus overgeslagen worden).

MartinJM
 
het is trouwens heel stom. maar het is opgelost, het stukje van de 1001 moet boven aan in deif statement, anders loopt ie namelijk dat het getal wat ik wil weten hoger is als het getal.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan