Visual basic 2010 niet te debuggen, geen fout meldingen.

Status
Niet open voor verdere reacties.

adeus

Nieuwe gebruiker
Lid geworden
17 feb 2011
Berichten
4
IK heb een vb programma dat als ik het start met F5 na enige tijd hangt. Speciaal als ik meerdere malen de datagrid aanklick.
Dat geld ook voor het coppiled progamma.
Zowel in Windows 7 als Wista.
 
Je programma wil dus niet starten als je op F5 drukt, of is het iets anders? Het zou normaal moeten werken, maar probeer eens het gewone groene play knopje. Zou je ook even de code van je programma hier neer willen zetten, ik begin net met vb, maar misschien zit er een beginnersfoutje in:P

Of gaat het er niet om dat het niet opstart?

P.s.: Heb jij het van een boek of iets anders. Nog enige sites voor leuke (nederlands:D) tuts of niet?
 
Is het wel mogelijk om met F8 door de code te stappen?
Heb je met F9 breakpoints gezet om te zien wat er wel goed gaat en waar het vast zou kunnen lopen?

Ron
 
Hallo Ron
Ja dat is mogelijk maar dan blijft het programma niet vast te hangen.
Breakpoints werken normaal, maar het zijn korte routines , dus leveren geen inzicht op.
Alleen in normale run mode (F5) of als exe file treed het probleem op. Bij afbreken in VB geeft het vasthangende programma, een normale 0 exit code , alsof het nog normaal werkte.

Arnold
 
Klinkt alsof er toch ergens een oneindige loop ontstaat. Enige manier om meer inzicht te krijgen is door hier de code weg te zetten

Ron
 
Even je code hier plaatsen ;) Dus alles wat je getypt hebt;)
 
Beste Luuknl

Dit is mijn code die ik ook in andere programmas gebruik, en wel werkt.
Maar in deze samen stelling hangt hij vast bij debugging zowel als gecompileerd.


Dim aantalwoorden As Integer = 0
Dim vernieuwen As Integer = 4
Dim lijsten(100) As String
Dim woorden(100) As String
Dim vraag As String = ""
Dim plaatje As Integer = 0
Dim antwoorden As Integer = 0
Dim klikken As Integer = 0
Dim goed As Integer = 0
Dim begin As Integer = 1
Dim mode As Integer = 0
Dim strWoorden(4) As String
Dim aantalLijsten As Long = 0
Dim bijwerken As Boolean = False

Dim Connection As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\AlfaBeding\PlaatjesOefening\OefenData.mdb;Persist Security Info=True;Jet OLEDB:Database Password=a2030b")

Dim WoordenAdapter As New OleDbDataAdapter
Dim WoordenTabel As New DataTable
Dim WoordenBindingSource As New BindingSource()

Dim LijstenAdapter As New OleDbDataAdapter
Dim LijstenTabel As New DataTable
Dim LijstenBindingSource As New BindingSource()


Private Sub frmOefenen_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

CreateInitialMenus()

VulLijsten()
If aantalLijsten < 1 Then
MsgBox("Geen lijsten", MsgBoxStyle.Critical)
Exit Sub
End If


VulWoordenLijst(lijsten(1))
start()

End Sub


#Region "Menu"

Private Sub MenuOption_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Dim selectedItem As ToolStripMenuItem = CType(sender, ToolStripMenuItem)
selectedItem.Checked = True
End Sub

Private Sub ToolStripMenuItemEinde_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItemEinde.Click

Me.Close()
End Sub


Private Sub ToolStripMenuItemOpniew_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItemOpniew.Click

start()
End Sub

Private Sub MenuItem_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles FileMenu.MouseEnter

Dim selected As ToolStripMenuItem = CType(sender, ToolStripMenuItem)
End Sub

Private Sub ComboBoxRegels_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

Dim combo As ToolStripComboBox = CType(sender, ToolStripComboBox)
Select Case combo.SelectedIndex
Case 0
vernieuwen = 1
Case 1
vernieuwen = 2
Case 2
vernieuwen = 3
Case 3
vernieuwen = 4
End Select
End Sub

Private Sub ComboBoxMode_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

Dim combo As ToolStripComboBox = CType(sender, ToolStripComboBox)
mode = combo.SelectedIndex
start()
End Sub

Private Sub ViewToolStripMenuItem1_Click(sender As System.Object, e As System.EventArgs) Handles ViewToolStripMenuItem1.Click

If DataGridViewLijsten.Visible = False Then
DataGridViewLijsten.Visible = True
DataGridViewWoorden.Visible = True
lAantalWoorden.Visible = True
VerbergAntwoorden()
verbergteksboxen()
verbergTeksten()
bijwerken = True
lAantalWoorden.Visible = True
Else
DataGridViewLijsten.Visible = False
DataGridViewWoorden.Visible = False
lAantalWoorden.Visible = False
lAantalWoorden.Visible = False
start()
End If
End Sub

Private Sub CreateInitialMenus()


Dim ComboBoxMode As New ToolStripComboBox()
With ComboBoxMode
.Items.Add("Woorden leren.")
.Items.Add("Woorden aanwijzen.")
.Items.Add("Woorden typen.")
.SelectedIndex = 0
.ToolTipText = "Kies de oefenmethode"
.Width = 155
.Visible = True
AddHandler .SelectedIndexChanged, AddressOf Me.ComboBoxMode_SelectedIndexChanged
MenuStrip.Items.Add(ComboBoxMode)
End With

Dim ComboBoxRegels As New ToolStripComboBox()
With ComboBoxRegels
.Width = 200
.Items.Add("1 woord vernieuwen")
.Items.Add("2 woorden venieuwen")
.Items.Add("3 woorden venieuwen")
.Items.Add("4 woorden venieuwen")
.SelectedIndex = 3
.ToolTipText = "Kies aantal plaatjes dat verniewd moet worden "
AddHandler .SelectedIndexChanged, AddressOf Me.ComboBoxRegels_SelectedIndexChanged
MenuStrip.Items.Add(ComboBoxRegels)
End With
End Sub

Private Sub lEinde_Click(sender As System.Object, e As System.EventArgs) Handles lEinde.Click
Me.Close()
End Sub

#End Region
#Region "Region Oefening"

Private Sub start()
bVolgendePlaatjes.Visible = False
lResultaat.Visible = False
lEinde.Visible = False
VerbergAntwoorden()
verbergTeksten()
begin = 1
klikken = 0
goed = 0
LaadWoorden(4)
End Sub

Private Sub volgendeplaatjes()

If begin = aantalwoorden Then
lEinde.Text = "Einde oefening"
lEinde.Visible = True
lResultaat.Visible = True
bVolgendePlaatjes.Visible = False
Exit Sub
End If

If begin + vernieuwen > aantalwoorden Then
vernieuwen = aantalwoorden - begin
End If

bVolgendePlaatjes.Visible = False
lResultaat.Visible = False
LaadWoorden(vernieuwen)
End Sub

Private Sub LaadWoorden(ByVal aantal As Integer)

On Error Resume Next
Me.bTekst1.Text = ""
Me.bTekst2.Text = ""
Me.bTekst3.Text = ""
Me.bTekst4.Text = ""
tbGetypt1.Text = ""
tbGetypt2.Text = ""
tbGetypt3.Text = ""
tbGetypt4.Text = ""

Dim x As Integer = 1
Dim t(4) As Integer
Dim y As Integer = 0
Dim plaatje As String
Dim woord As String

t(1) = 0
t(2) = 0
t(3) = 0
t(4) = 0

Do
Dim s As Integer = RandomSelect(4)
For y = 1 To 4
If t(y) = s Then s = 0
Next
If s > 0 And s < 5 Then
strWoorden(s) = woorden(begin - 1 + x)

plaatje = ("C:\AlfaBeding\PlaatjesOefening\Plaatjes\" & strWoorden(s) & ".jpg")
If My.Computer.FileSystem.FileExists(plaatje) = False Then
plaatje = ("C:\AlfaBeding\PlaatjesOefening\Plaatjes\Geenplaatje.jpg")
End If

Select Case s
Case 1 : Me.bAntwoord1.Text = strWoorden(s)
Me.bImage1.Image = Image.FromFile(plaatje)
Case 2 : Me.bAntwoord2.Text = strWoorden(s)
Me.bImage2.Image = Image.FromFile(plaatje)
Case 3 : Me.bAntwoord3.Text = strWoorden(s)
Me.bImage3.Image = Image.FromFile(plaatje)
Case 4 : Me.bAntwoord4.Text = strWoorden(s)
Me.bImage4.Image = Image.FromFile(plaatje)
End Select
t(s) = s
x = x + 1
End If
Loop Until x = aantal + 1

t(1) = 0
t(2) = 0
t(3) = 0
t(4) = 0
x = 1
Do
Randomize()
Dim s As Integer = RandomSelect(5)

If s > 0 And s < 5 Then
For y = 1 To 4
If t(y) = s Then s = 0
Next
If s > 0 And s <> x Then
woord = strWoorden(s)
Select Case x
Case (1) : Me.bTekst1.Text = woord
Case (2) : Me.bTekst2.Text = woord
Case (3) : Me.bTekst3.Text = woord
Case (4) : Me.bTekst4.Text = woord
End Select
t(x) = s
x = x + 1
End If
End If
Loop Until x = 5

Select Case mode
Case 0
ToonAntwoorden()
verbergteksboxen()
Case 1
Me.bTekst1.Visible = True
Me.bTekst2.Visible = True
Me.bTekst3.Visible = True
Me.bTekst4.Visible = True
VerbergAntwoorden()
verbergteksboxen()
Case 2
VerbergAntwoorden()
tbGetypt1.Visible = True
tbGetypt2.Visible = True
tbGetypt3.Visible = True
tbGetypt4.Visible = True
tbGetypt1.Focus()
End Select
antwoorden = 0
begin = begin + aantal
End Sub
Private Function RandomSelect(ByVal maxwaarde As Integer) As Integer

On Error Resume Next
Dim ng As Integer
Rnd(-6)
Randomize()
ng = CInt((maxwaarde + 1) * Rnd(4) + 1)
lTest.Text = Str(ng)
RandomSelect = ng
End Function

Private Sub ToonTeksten()
Me.bTekst1.Visible = True
Me.bTekst2.Visible = True
Me.bTekst3.Visible = True
Me.bTekst4.Visible = True
End Sub

Private Sub ToonAntwoorden()
Me.bAntwoord1.Visible = True
Me.bAntwoord2.Visible = True
Me.bAntwoord3.Visible = True
Me.bAntwoord4.Visible = True
End Sub

Private Sub VerbergAntwoorden()
Me.bAntwoord1.Visible = False
Me.bAntwoord2.Visible = False
Me.bAntwoord3.Visible = False
Me.bAntwoord4.Visible = False
End Sub

Private Sub verbergTeksten()
Me.bTekst1.Visible = False
Me.bTekst2.Visible = False
Me.bTekst3.Visible = False
Me.bTekst4.Visible = False
End Sub

Private Sub verbergteksboxen()
tbGetypt1.Visible = False
tbGetypt2.Visible = False
tbGetypt3.Visible = False
tbGetypt4.Visible = False
End Sub

Private Sub bVolgendePlaatjes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bVolgendePlaatjes.Click
volgendeplaatjes()
End Sub

Private Sub cbTypen_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
start()
End Sub

Private Sub bLijst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
If DataGridViewLijsten.Visible = True Then DataGridViewLijsten.Visible = False Else DataGridViewLijsten.Visible = True
End Sub

Private Sub bImage1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bImage1.Click
vraag = bAntwoord1.Text
plaatje = 1
If mode = 0 Then
ToonTeksten()
VerbergAntwoorden()
End If
End Sub

Private Sub bImage2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bImage2.Click
vraag = bAntwoord2.Text
plaatje = 2
If mode = 0 Then
ToonTeksten()
VerbergAntwoorden()
End If
End Sub

Private Sub bImage3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bImage3.Click
vraag = bAntwoord3.Text
plaatje = 3
If mode = 0 Then
ToonTeksten()
VerbergAntwoorden()
End If
End Sub

Private Sub bImage4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bImage4.Click
vraag = bAntwoord4.Text
plaatje = 4
If mode = 0 Then
ToonTeksten()
VerbergAntwoorden()
End If
End Sub

Private Sub bTekst1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bTekst1.Click
klikken = klikken + 1
If bTekst1.Text = vraag Then ToonAntwoord()
End Sub

Private Sub bTekst2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bTekst2.Click
klikken = klikken + 1
If bTekst2.Text = vraag Then ToonAntwoord()
End Sub

Private Sub bTekst3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bTekst3.Click
klikken = klikken + 1
If bTekst3.Text = vraag Then ToonAntwoord()
End Sub

Private Sub bTekst4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bTekst4.Click
klikken = klikken + 1
If bTekst4.Text = vraag Then ToonAntwoord()
End Sub

Private Sub ToonAntwoord()
goed = goed + 1
Select Case plaatje
Case 1
If (antwoorden And 1) = 0 Then
Me.bAntwoord1.Visible = True : antwoorden = antwoorden + 1
End If
Case 2
If (antwoorden And 2) = 0 Then
Me.bAntwoord2.Visible = True : antwoorden = antwoorden + 2
End If
Case 3
If (antwoorden And 4) = 0 Then
Me.bAntwoord3.Visible = True : antwoorden = antwoorden + 4
End If
Case 4
If (antwoorden And 8) = 0 Then
Me.bAntwoord4.Visible = True : antwoorden = antwoorden + 8
End If
End Select
If antwoorden = 15 Then
verbergTeksten()
bVolgendePlaatjes.Visible = True
lResultaat.Text = "RESULTAAT = " & Int(goed / (klikken / 100)) & " %"
lResultaat.Visible = True
End If
End Sub

Private Sub tbGetypt1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbGetypt1.TextChanged
If UCase(tbGetypt1.Text) = UCase(bAntwoord1.Text) Then
tbGetypt2.Focus()
If (antwoorden And 1) = 0 Then
goed = goed + Len(tbGetypt1.Text)
antwoorden = antwoorden + 1
End If
testEinde()
End If
klikken = klikken + 1
End Sub
Private Sub tbGetypt2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbGetypt2.TextChanged
If UCase(tbGetypt2.Text) = UCase(bAntwoord2.Text) Then
tbGetypt3.Focus()
If (antwoorden And 2) = 0 Then
goed = goed + Len(tbGetypt2.Text)
If (antwoorden And 2) = 0 Then antwoorden = antwoorden + 2
End If
testEinde()
End If
klikken = klikken + 1
End Sub

Private Sub tbGetypt3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbGetypt3.TextChanged
If UCase(tbGetypt3.Text) = UCase(bAntwoord3.Text) Then
tbGetypt4.Focus()
If (antwoorden And 4) = 0 Then
goed = goed + Len(tbGetypt4.Text)
If (antwoorden And 4) = 0 Then antwoorden = antwoorden + 4
End If
testEinde()
End If
klikken = klikken + 1
End Sub

Private Sub tbGetypt4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbGetypt4.TextChanged
If UCase(tbGetypt4.Text) = UCase(bAntwoord4.Text) Then
If (antwoorden And 8) = 0 Then
goed = goed + Len(tbGetypt4.Text)
If (antwoorden And 8) = 0 Then antwoorden = antwoorden + 8
End If
testEinde()
End If
klikken = klikken + 1
End Sub

Private Sub testEinde()
If antwoorden = 15 Then
bVolgendePlaatjes.Visible = True
verbergTeksten()
lResultaat.Text = "RESULTAAT = " & Int(goed / (klikken / 100)) & " %"
lResultaat.Visible = True
tbGetypt1.Focus()
End If
End Sub
#End Region
#Region "Region Lijsten"

Private Sub VulLijsten()

Dim x As Integer
ReDim woorden(100)
aantalLijsten = 0

LijstenTabel.AcceptChanges()
LijstenTabel.Clear()

LijstenAdapter.SelectCommand = New OleDbCommand("Select lijst,omschrijving from Lijsten", Connection)
Dim Lijstenbuilder As OleDbCommandBuilder = New OleDbCommandBuilder(LijstenAdapter)
LijstenAdapter.Fill(LijstenTabel)
aantalLijsten = LijstenTabel.Rows.Count

LijstenBindingSource.DataSource = LijstenTabel
DataGridViewLijsten.DataSource = LijstenBindingSource
DataGridViewLijsten.Columns.Item(0).Width = 100
DataGridViewLijsten.Columns.Item(1).Width = 250

x = 0
Dim row As DataRow
For Each row In LijstenTabel.Rows
x = x + 1
lijsten(x) = row.ItemArray(0).ToString
Next
End Sub

Private Sub DataGridViewLijsten_RowHeaderMouseClick(ByVal sender As Object, ByVal e As DataGridViewCellMouseEventArgs) Handles DataGridViewLijsten.RowHeaderMouseClick

aantalLijsten = DataGridViewLijsten.RowCount
If Not IsDBNull(DataGridViewLijsten.CurrentRow.Cells.Item(0).Value) Then
VulWoordenLijst(CStr(DataGridViewLijsten.CurrentRow.Cells.Item(0).Value))
start()
End If
End Sub

Private Sub DataGridViewLijsten_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridViewLijsten.Leave

LijstenAdapter.Update(LijstenTabel)
End Sub

Private Sub VulWoordenLijst(LijstNaam As String)

Dim x As Integer
ReDim woorden(100)
aantalwoorden = 0

WoordenTabel.Clear()
WoordenAdapter.SelectCommand = New OleDbCommand("Select Woord from " + LijstNaam, connection)
Dim Woordenbuilder As OleDbCommandBuilder = New OleDbCommandBuilder(WoordenAdapter)

Try
WoordenAdapter.Fill(WoordenTabel)
aantalwoorden = WoordenTabel.Rows.Count
Me.lAantalWoorden.Text = "Aantal woorden = " & aantalwoorden
WoordenBindingSource.DataSource = WoordenTabel
DataGridViewWoorden.DataSource = WoordenBindingSource
DataGridViewWoorden.Columns.Item(0).Width = 150
Catch ex As Exception
Dim command As String = "( [Woord] TEXT(15))"
Dim cmd As New OleDb.OleDbCommand("CREATE TABLE [" + LijstNaam + "] " + command, connection)
Me.connection.Open()
cmd.ExecuteNonQuery()
Me.connection.Close()
End Try


x = 0
Dim row As DataRow
For Each row In WoordenTabel.Rows
x = x + 1
woorden(x) = row.ItemArray(0).ToString
Next
End Sub

Private Sub DataGridViewWoorden_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridViewWoorden.Leave

WoordenAdapter.Update(WoordenTabel)
End Sub

#End Region
 
Pff ja zo ervaren ben ik ook weer niet. Sorry daar kan ik als beginner echt nog niets in ontdekken:confused: ff wachten totdat haaren101 reageert misschien;)
 
Zou een een breakpoint zetten bij deze loop:

Code:
Loop Until x = aantal + 1
 
t(1) = 0
 t(2) = 0
 t(3) = 0
 t(4) = 0
 x = 1
 Do

Daarnaast zou ik ook even je wachtwoord uit de connectionstring halen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan