Hallo, zit een beetje te freubelen in VB.Net. Probeer een Windows Forms applicatie te maken die uiteindelijk een aan te wijzen bestand in begint te lezen en vervolgens alle ASCII tekens eruit vist die woorden zouden kunnen zijn.
Stap 1 is het inlezen van de bron, om vervolgens elke chunk te kunnen parsen voor mogelijke woorden (een filtering van drie opeenvolgende ASCII tekens tussen 32-128 of zo). Probleem is echter dat na de eerste loop er een foutmelding verschijnt:
An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll
Additional information: Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.
De array is 101 elementen, de offset is 100, count is 100 als de loop voor de tweede keer bij de read instructie aankomt en krak gaat. Ik zie zo 1-2-3 niet waarom. Iemand met ideeen? Ik weet dat ik eroverheen lees, en ongetwijfelt iets doms doe, maar goed...
Stap 1 is het inlezen van de bron, om vervolgens elke chunk te kunnen parsen voor mogelijke woorden (een filtering van drie opeenvolgende ASCII tekens tussen 32-128 of zo). Probleem is echter dat na de eerste loop er een foutmelding verschijnt:
An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll
Additional information: Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.
De array is 101 elementen, de offset is 100, count is 100 als de loop voor de tweede keer bij de read instructie aankomt en krak gaat. Ik zie zo 1-2-3 niet waarom. Iemand met ideeen? Ik weet dat ik eroverheen lees, en ongetwijfelt iets doms doe, maar goed...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If File.Exists(filenamebox.Text) Then
Dim fs As FileStream = New FileStream(filenamebox.Text, FileMode.Open, FileAccess.Read)
Dim i As Integer
Dim nBytes As Integer = 100
Dim ByteArray(nBytes - 1) As Byte
Dim nBytesRead As Integer
For i = 0 To fs.Length Step nBytes
If i + nBytes > fs.Length Then
fs.Read(ByteArray, i, fs.Length - i)
Else
fs.Read(ByteArray, i, nBytes)
End If
scannedtext.Text = scannedtext.Text + System.Text.Encoding.UTF8.GetString(ByteArray)
Next
End If
End Sub |
When in question, when in doubt, run in circles, scream and shout.