vb6~陣列索引超出範圍 幫忙看程式碼

我有一個程式

然而

我在我這一台電腦執行時

都是可以正常執行的

我有一些朋友,也有使用 但也是沒問題

就在今天

我把我這個程式拿去學校弄

結果就出現 錯誤9 鎮列索引超出範圍

我當下就在想怎麼會這樣

後來我回來看一下程式碼

因為算是程式碼較冗長所以不全po上來

但是我在執行一次(在vb中執行)

就突然也出現陣列索引超出

然後就顯示在其中一行程式碼

Dim tmp() As String

tmp = Split(Inet1.OpenURL("這裡是輸入偵測有無更新的文章網址"), "<title>")

If Left(tmp(1), 4) = "?∪?撠" Then '如果標題是"無名小站" (由於是Utf-8所以是亂碼)

MsgBox "版本過舊,前往更新頁面", , "程式已更新"

Shell ("cmd.exe /c start 這裡是前往更新網址") '更新位址

End

End If

因為我這個程式執行時 就會執行該程式碼 form_load裡面

我在想是不是因為學校裡的那一台單獨的電腦沒有網路的關係

我是不知道是不是其他程式碼造成的

請高手幫幫忙

已更新項目:

我還有個疑問

因為我這個是以是否有該篇文章的存在來表示是否有更新

文章刪除代表有更新

那麼如果改成你說的這樣

會有其他問題嗎

我問題是在這裡

2 個已更新項目:

知識家的文字限制讓我無言了-.-

我看還是請 加我即時或msn

win895564@livemail.tw

ran6610123@yahoo.com.tw

感謝

3 個已更新項目:

If Left(tmp(1), 4) = "?∪?撠" or left(tmp(1),4)="" Then

我剛試過了 這樣還是會出錯

看的董我想表達的意思麻?-.-\\

如果想從原先的程式碼改 該如何改

4 個解答

評分
  • 9 年前
    最佳解答

    >>我在想是不是因為學校裡的那一台單獨的電腦沒有網路的關係

    沒錯,就是這個原因導致你所說的錯誤。

    tmp = Split(Inet1.OpenURL("這裡是輸入偵測有無更新的文章網址"), "<title>")

    上面這一行在沒網路的情況下,Inet1.OpenURL鐵定失敗,應會傳回 Nothing,

    Split當然沒東西可運作,結果是 tmp()內依然空無一物。

    接下來的 if Left(tmp(1), 4) , 出現陣列索引超出範圍的錯誤便是理所當然的了!

    2011-08-03 12:46:39 補充:

    單純的述句併寫成一式,通常沒什麼不妥,

    但這行的併寫便會隱藏地雷了:

    tmp = Split(Inet1.OpenURL("這裡是輸入偵測有無更新的文章網址"), " ")

    建議可改寫成:

    Dim buff As String

    buff = Inet1.OpenURL("這裡是輸入偵測有無更新的文章網址")

    If buff = "" Or buff is Nothing Then

    ' 錯誤處理

    Else

    tmp = Split( buff, " ")

    End If

    2011-08-03 12:51:47 補充:

    上面補充內容有2個地方的"<title>",被爛知識+吃成 " "。

    如倒數第二行應為:tmp = Split( buff, "<title>")

    (惹禍的符號,請以小寫視之。)

    2011-08-03 23:01:51 補充:

    從合併的式子拆解成兩式,不會衍生問題,

    若有問題,應是原本就已存在的問題。

    至於即時通或MSN,

    很抱歉,我只開放給實際生活領域的好友,

    2011-08-04 23:49:46 補充:

    唉!講更明確一點,如下:

    If buff = "" Or buff is Nothing Then

    ' 錯誤處理

    Else

    tmp = Split( buff, " ")

    If Left(tmp(1), 4) = "?∪?撠" Then '如果標題是"無名小站" (由於是Utf-8所以是亂碼)

    MsgBox "版本過舊,前往更新頁面", , "程式已更新"

    Shell ("cmd.exe /c start 這裡是前往更新網址") '更新位址

    End

    End If

    註解的那地方,你可寫些實際的錯誤處理程式碼。

    比如顯示網址找不到等訊息。

  • 匿名使用者
    9 年前

    網頁設計師您了解seo的重要性嗎?鹿鼎seo關鍵字行銷,無效可保證退費(需簽約)

    馬上搶頭香洽: http://workmail.cc/smtp.htm 王先生

  • 9 年前

    所以說, 要學程式, 必先學好Debug.....

  • 匿名使用者
    9 年前

    所以在前面加一行

    判斷分割後陣列長度

    2011-08-04 23:38:12 補充:

    版主似乎沒看懂回答者在說什麼...

    把 tmp = Split(Inet1... 換掉

    改成建議的程式碼

    再把 If Left(tmp ... 寫到 Else 中

    ...

    Else

      tmp = Split( buff, " ")

      '剩的放這裡

    End If

    ...

還有問題?馬上發問,尋求解答。