我寫一個小程式
只不過是讓vb 讀不到1M 的資料 50幾萬個字
沒想到 問題多多
vb 在讀資料若太多
資料的穩定性就不夠
比如 "叫你說" 前面這個叫字 就會出現亂碼
但是事實上 用剪貼簿將 "叫你說" 字串資料貼上 資料還是沒有錯
若只有讀取 不到100k 的資料 就不會有這個問題
用了許多方法 還是一樣
RichTextBox1.Text = ""
RichTextBox2.Text = ""
Text5.Text = ""
RichTextBox1.SelFontSize = 15
RichTextBox1.SelColor = vbBlack 'vbBlue
Erase DTEMP
On Error GoTo EX1:
If Right$(Dir1.Path, 1) = "\" Then
fn$ = Dir1.Path + File1.FileName
Else
fn$ = Dir1.Path + "\" + File1.FileName
End If
F = FreeFile
I = 0
Open fn$ For Input As #F
Do While Not EOF(F) '不是檔尾 繼續執行
Line Input #F, b$ '資料不可以有空白
a = Trim(b)
If a = "" Then GoTo XX:
ReDim Preserve DTEMP$(I) '將陣列x 加大1筆 與下面i無關'
DTEMP$(I) = a$
I = I + 1 '
XX:
Loop
Close #F
'---------------------
I5 = 0
Erase BDIM
For I2 = LBound(DTEMP) To UBound(DTEMP)
ReDim Preserve BDIM$(I5)
BDIM$(I5) = DTEMP(I2)
I5 = I5 + 1 '
If I5 > 2000 Then
RichTextBox1.SelText = Join(BDIM, vbCrLf) + vbCrLf
I5 = 0
Erase BDIM
End If
'原本 可以一次 讀完 可是這樣 亂碼字串 出現的機率更大
'還有 每次出現亂碼的字串 都是固定 不是隨機出現
'還有該字串 不是 ®、©及TM等特殊字
Next I2
RichTextBox1.SelText = Join(BDIM, vbCrLf) '+ vbCrLf
Erase BDIM
'---------------------
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = 0