Back | Reverse | Quick Reply | Post Reply |

I did something wrong...
Link | by hawire on 2008-06-08 11:18:36 (edited 2008-06-12 21:23:11)
ok... i'm in a programming course at my school and i have to do these reviews from a textbook. We use visual basic and i have to make an appplication that will tell the user the number of times a letter occurs in a word. With what i have, it says there is an overflow error and i dont know how to fix it.

The information it gives me is:

intnumoccurances = 0
intsearchpos = 0
do
 intletterpos = position of letter within phrase
 if intletterpos > 0 then
 increment intnumoccurances
 intsearchpos = intletterpos + 1
 end if
loop while intsearchpos <= len(strphrase) and intletter pos <> 0


____________________________________________________________________________

And this is what i have (please don't diss the programming style too much)

_____________________________________________________________________________


Option Explicit

Private intnumoccurances As Integer, intsearchpos As Integer

Private strtext As String, strsubstring As String, intletterpos As Integer

Private Sub Form_Load()
    intnumoccurances = 0
    intsearchpos = 1
End Sub

Private Sub cmdcount_click()
    strtext = txttext.Text
    strsubstring = txtletter.Text
    intletterpos = InStr(intsearchpos, strtext, strsubstring)
    Do While intsearchpos <= Len(strtext) And intletterpos <> 0 And InStr(intsearchpos, strtext, strsubstring) > 0
        If intletterpos > 0 Then
            intnumoccurances = intnumoccurances + 1
            intsearchpos = intletterpos + 1
        Else
            intnumoccurances = 0
            lbloccurances.Caption = intnumoccurances
        End If
    Loop
    lbloccurances.Caption = intnumoccurances
End Sub

Private Sub cmddone_click()
    Unload Me
End Sub


can anyone please tell me what im doing wrong...?

"There are few people i would sacrifice something for and many people i would sacrifice a lot for, but there are only two people i would sacrifice everything for." ~ A quote by me! ~ (I think its original)

Re: I did something wrong...
Link | by psoplayer on 2008-06-12 21:58:19
What you had would put you in an infinite loop where a variable would eventually reach its limit. I don't know about you, but this makes a lot more sense to me:

Option Explicit

Private Sub cmdcount_click()
    If Not txtletter.TextLength = 1 Then
        MsgBox("We one (and only need one) letter to search for. Thanks for trying")
        Return
    End If
    Dim strtext As String
    Dim strsubstring As Char
    Dim intletterpos, intsearchpos, intnumoccurances As Integer
    intsearchpos = 1
    intnumoccurances = 0
    strtext = txttext.Text
    strsubstring = txtletter.Text
    intletterpos = InStr(intsearchpos, strtext, strsubstring)
    For Each c As Char In strtext
        If c = strsubstring Then
            intnumoccurances += 1
        End If
    Next
    lbloccurances.Text = intnumoccurances
End Sub

Private Sub cmddone_click()
    Close()
End Sub



Back | Reverse | Quick Reply | Post Reply |

Copyright 2000-2024 Gendou | Terms of Use | Page loaded in 0.0029 seconds at 2024-12-28 22:12:41