Private Sub Command1_Click()
Dim strLen As Integer
Dim hstr As String * 1
Dim lstr As String * 1
Dim dataMe As Integer
Dim mytext1 As String
Dim nbyte() As Byte
strLen = Len(Text1.Text)
mytext1 = Text1.Text
For n = 1 To strLen
n = n - 1
If n Mod 3 = 0 Then
hstr = Mid(mytext1, 1, 1)
ElseIf n Mod 3 = 1 Then
lstr = Mid(mytext1, 2, 1)
dataMe = StrToHex(hstr) * 16 + StrToHex(lstr)
mytext1 = Right(mytext1, Len(mytext1) - 2)
nbyte(i) = dataMe
i = i + 1
n = n + 1
End If
Next n
MSComm1.Output = nbyte
End Sub
顯示nbyte陣列下標越界是為什么呢。。。望大家指導
uj5u.com熱心網友回復:
① 你的陣列nbyte()是動態陣列,在使用之前要用 Redim陳述句來“分配資料空間”(或用一個“非空的陣列”來對它賦值)、然后才能使用。你沒有經過這一步,就直接訪問它的陣列元素,就會出現“陣列下標越界”的運行錯誤。
② 你的For陳述句,那樣的寫法(就是開頭有一句 n=n-1、控制變數的步長又為1),就會把它變成一個死回圈了!
難道你沒有進行運行測驗?沒有發現這個問題?????
③ 你的For回圈 控制變數是n,后面又是用的 nbyte(i) = .....
這兩個變數在程序中沒有宣告過,難道是模塊級的變數或全域變數?
變數 i 在這個程序中,沒有被賦值、其它陳述句也沒有用到過它。
你確認你的代碼沒有寫錯?能用i的值來訪問nbyte()的元素???
④ 不知道你的函式 StrToHex(hstr) 是什么樣的,也難以“猜”出你這段代碼要做什么,
是否會有些別的什么問題,目前無從知曉。
uj5u.com熱心網友回復:
做人要厚道做程式員要細心
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/125047.html
上一篇:下標越界,怎么解決?求大神
