I am trying to run the below code, which I found in a book named Mastering
Visual basic.NET:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
OpenFileDialog1.DefaultExt = "TXT"
OpenFileDialog1.Filter = "Text|*.TXT|All Files|*.*"
OpenFileDialog1.ShowDialog()
If OpenFileDialog1.FileName = "" Then Exit Sub
Dim str As StreamReader
Dim txtFile As File
Dim txtLine As String
Dim Words() As String
Dim Delimiters() As Char = {CType(" ", Char), CType(".", Char), _
CType(",", Char), CType("‘", Char), _
CType("!", Char), CType(";", Char), _
CType(":", Char), Chr(10), Chr(13)}
str = File.OpenText(OpenFileDialog1.FileName)
txtLine = str.ReadLine()
txtLine = str.ReadToEnd
Words = txtLine.Split(Delimiters)
Dim iword As Integer, word As String
For iword = 0 To Words.GetUpperBound(0)
word = Words(iword).ToUpper
If IsValidWord(word) Then
If Not WordFrequencies.ContainsKey(word) Then
WordFrequencies.Add(word, 1)
Else
WordFrequencies(word) = CType(WordFrequencies(word),
Integer) + 1
End If
End If
Next
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
Dim wEnum As IDictionaryEnumerator
Dim occurrences As Integer
Dim allWords As New System.Text.StringBuilder()
wEnum = WordFrequencies.GetEnumerator
While wEnum.MoveNext
allWords.Append(wEnum.Key.ToString & vbTab & "—>" & vbTab & _
wEnum.Value.ToString & vbCrLf)
End While
TextBox1.Text = allWords.ToString
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button3.Click
Dim wEnum As IDictionaryEnumerator
Dim Words(WordFrequencies.Count) As String
Dim Frequencies(WordFrequencies.Count) As Double
Dim allWords As New System.Text.StringBuilder()
Dim i, totCount As Integer
wEnum = WordFrequencies.GetEnumerator
While wEnum.MoveNext
Words(i) = CType(wEnum.Key, String)
Frequencies(i) = CType(wEnum.Value, Integer)
totCount = totCount + Frequencies(i)
i = i + 1
End While
For i = 0 To Words.GetUpperBound(0)
Frequencies(i) = Frequencies(i) / totCount
Next
Words.Sort(Frequencies, Words)
TextBox1.Clear()
For i = Words.GetUpperBound(0) To 0 Step -1
allWords.Append(Words(i) & vbTab & "—>" & vbTab & _
Format(100 * Frequencies(i), "#.000") & vbCrLf)
Next
TextBox1.Text = allWords.ToString
End Sub
End Class
I had a few squiggle lines, so I added this:
Imports System.IO
Some of the squiggles disappeared, but I still have squiggles under the
following: OpenFileDialog1, IsValidWord, WordFrequencies, and Words.Sort
I tried to run the project, and of course it didn’t work. My question is
how do I fix this? Also, and more importantly, how do I figure out what to
do the next time something like this happens? Is there a library or class
that needs to be imported? Is there a reference that needs to be added?
I’ve read a couple books on VB and encounter these types of things from time
to time, but I don’t really know how to resolve the issues myself, I guess
because I don’t have the level of experience of others. So I come to this
discussion group and get help sometimes, which is great!! However, I really
want to be able to resolve these issues by myself.
Thanks!
Ryan---
--
Ryan---
If this information was helpful, please indicate this by clicking ''Yes''.
|
|
0
|
|
|
|
Reply
|
Utf
|
12/11/2009 6:49:01 PM |
|
ryguy7272 schrieb:
> I am trying to run the below code, which I found in a book named Mastering
> Visual basic.NET:
Either you didn't follow the steps described in the book to write a
complete example - it should at least say there has to be an OpenFileDialog
on the Form - or you should buy a better book.
--
Armin
|
|
0
|
|
|
|
Reply
|
Armin
|
12/11/2009 6:56:02 PM
|
|
ryguy7272 wrote:
> I am trying to run the below code, which I found in a book named Mastering
<snipped>
>
> I had a few squiggle lines, so I added this:
> Imports System.IO
>
> Some of the squiggles disappeared, but I still have squiggles under the
> following: OpenFileDialog1, IsValidWord, WordFrequencies, and Words.Sort
>
> I tried to run the project, and of course it didn’t work. My question is
> how do I fix this? Also, and more importantly, how do I figure out what to
> do the next time something like this happens? Is there a library or class
> that needs to be imported? Is there a reference that needs to be added?
> I’ve read a couple books on VB and encounter these types of things from time
> to time, but I don’t really know how to resolve the issues myself, I guess
> because I don’t have the level of experience of others. So I come to this
> discussion group and get help sometimes, which is great!! However, I really
> want to be able to resolve these issues by myself.
>
> Thanks!
> Ryan---
>
>
>
'IsValidWord .NET' as an example and you enter the phrase into a Search
Engine like Google or Bing, and you track down what namespace it belongs
to and put the namespace in your program.
|
|
0
|
|
|
|
Reply
|
Mr
|
12/11/2009 7:56:09 PM
|
|
Have you checked whether the author has published corrections on his
webpage?
Drag an open file dialog control from the toolbox and drop it on the form.
You need to add the following function:
' This function returns False if the word passed as argument is invalid
' Valid words are made up of letters ("vice-versa" is not a valid word,
for example)
Protected Function IsValidWord(ByVal word As String) As Boolean
If Trim(word).Length = 0 Then
Return (False)
End If
Dim ch As Char
Dim iChar As Integer
For iChar = 0 To Len(word) - 1
ch = word.Chars(iChar)
If Not System.Char.IsLetter(ch) Then
Return (False)
End If
Next
Return (True)
End Function
WordFrequencies must be declared as "Dim WordFrequencies As New Hashtable()"
and needs to be filled with the frequency table from the frequencies file
(BIN or XML) in the appropriate routine .
Change "Words.Sort(Frequencies, Words)" to "Array.Sort(Frequencies, Words)"
Also, In Button 3, it should be "totCount = CInt(totCount + Frequencies(i))"
The delimiters line is wrong - it should be: Dim Delimiters() As Char = {"
"c, "."c, ","c, "‘"c, "!"c, ";"c, ":"c, Chr(10), Chr(13)}
"ryguy7272" <ryguy7272@discussions.microsoft.com> wrote in message
news:FE54EB99-5156-4983-89A3-4B39EDBDE88E@microsoft.com...
>I am trying to run the below code, which I found in a book named Mastering
> Visual basic.NET:
>
> Public Class Form1
>
> Private Sub Button1_Click(ByVal sender As System.Object, _
> ByVal e As System.EventArgs) Handles Button1.Click
> OpenFileDialog1.DefaultExt = "TXT"
> OpenFileDialog1.Filter = "Text|*.TXT|All Files|*.*"
> OpenFileDialog1.ShowDialog()
> If OpenFileDialog1.FileName = "" Then Exit Sub
> Dim str As StreamReader
> Dim txtFile As File
> Dim txtLine As String
> Dim Words() As String
> Dim Delimiters() As Char = {CType(" ", Char), CType(".", Char), _
> CType(",", Char), CType("‘", Char), _
> CType("!", Char), CType(";", Char), _
> CType(":", Char), Chr(10), Chr(13)}
> str = File.OpenText(OpenFileDialog1.FileName)
> txtLine = str.ReadLine()
> txtLine = str.ReadToEnd
> Words = txtLine.Split(Delimiters)
> Dim iword As Integer, word As String
> For iword = 0 To Words.GetUpperBound(0)
> word = Words(iword).ToUpper
> If IsValidWord(word) Then
> If Not WordFrequencies.ContainsKey(word) Then
> WordFrequencies.Add(word, 1)
> Else
> WordFrequencies(word) = CType(WordFrequencies(word),
> Integer) + 1
> End If
> End If
> Next
> End Sub
>
>
> Private Sub Button2_Click(ByVal sender As System.Object, _
> ByVal e As System.EventArgs) Handles Button2.Click
> Dim wEnum As IDictionaryEnumerator
> Dim occurrences As Integer
> Dim allWords As New System.Text.StringBuilder()
> wEnum = WordFrequencies.GetEnumerator
> While wEnum.MoveNext
> allWords.Append(wEnum.Key.ToString & vbTab & "—>" & vbTab & _
> wEnum.Value.ToString & vbCrLf)
> End While
> TextBox1.Text = allWords.ToString
> End Sub
>
>
> Private Sub Button3_Click(ByVal sender As System.Object, _
> ByVal e As System.EventArgs) Handles Button3.Click
> Dim wEnum As IDictionaryEnumerator
> Dim Words(WordFrequencies.Count) As String
> Dim Frequencies(WordFrequencies.Count) As Double
> Dim allWords As New System.Text.StringBuilder()
> Dim i, totCount As Integer
> wEnum = WordFrequencies.GetEnumerator
> While wEnum.MoveNext
> Words(i) = CType(wEnum.Key, String)
> Frequencies(i) = CType(wEnum.Value, Integer)
> totCount = totCount + Frequencies(i)
> i = i + 1
> End While
> For i = 0 To Words.GetUpperBound(0)
> Frequencies(i) = Frequencies(i) / totCount
> Next
> Words.Sort(Frequencies, Words)
> TextBox1.Clear()
> For i = Words.GetUpperBound(0) To 0 Step -1
> allWords.Append(Words(i) & vbTab & "—>" & vbTab & _
> Format(100 * Frequencies(i), "#.000") & vbCrLf)
> Next
> TextBox1.Text = allWords.ToString
> End Sub
>
> End Class
>
> I had a few squiggle lines, so I added this:
> Imports System.IO
>
> Some of the squiggles disappeared, but I still have squiggles under the
> following: OpenFileDialog1, IsValidWord, WordFrequencies, and Words.Sort
>
> I tried to run the project, and of course it didn’t work. My question is
> how do I fix this? Also, and more importantly, how do I figure out what
> to
> do the next time something like this happens? Is there a library or class
> that needs to be imported? Is there a reference that needs to be added?
> I’ve read a couple books on VB and encounter these types of things from
> time
> to time, but I don’t really know how to resolve the issues myself, I guess
> because I don’t have the level of experience of others. So I come to this
> discussion group and get help sometimes, which is great!! However, I
> really
> want to be able to resolve these issues by myself.
>
> Thanks!
> Ryan---
>
>
>
> --
> Ryan---
> If this information was helpful, please indicate this by clicking ''Yes''.
|
|
0
|
|
|
|
Reply
|
James
|
12/12/2009 2:50:22 AM
|
|
|
3 Replies
244 Views
(page loaded in 1.385 seconds)
|