none
求救,有一段code我不懂debug RRS feed

  • 問題

  • Public Function ReadingSetting(ByVal S As String) As String
            Dim f As New FileInfo(Form1.dir.FullName & "\Setting\Setting.txt")
            Dim Setting_Value As String
            SR = f.OpenText
            Dim Got As Boolean = False
            Do While (SR.Peek >= 0 Or Not Got)
                Dim temp As String = SR.ReadLine
                If (temp.StartsWith(S)) Then
                    temp = RTrim(temp)
                    Setting_Value = temp
         Got = True
                End If
            Loop
            Return Setting_Value
        End Function

    到紅色那句時就出現NullReferenceException
    但我用遂步執行是一切正常的
    我也可以肯定temp和s也不是null的
    請問我上面有甚麼錯嗎?
    謝謝
    2008年4月17日 上午 11:51

解答

  • 先用正常模式直接跑,跑到錯誤的對話盒按偵錯。

    在即時運算視窗分別打

    ? temp

    ? s

    一般來說會把大部分屬性輸出來,把它貼出來。

     

    如果你逐步模式正常,裡面最大差異可能在於你讀取的目標檔案是否是由別的程式完成寫入。
    2008年4月17日 下午 02:37
    版主

所有回覆

  • Hi,

    發生錯誤的時候程式會中斷在錯誤的地方,這時候去看temp跟s也都不是nothing嗎?

     

    2008年4月17日 下午 12:24
    版主
  • hi
    恩 我有set breakpoint試過
    一樣出問題 我去看temp和s也都是有東西的
    但奇怪的地方在於
    我用逐步執行一句一句run
    一切正常耶
    2008年4月17日 下午 12:44
  • 先用正常模式直接跑,跑到錯誤的對話盒按偵錯。

    在即時運算視窗分別打

    ? temp

    ? s

    一般來說會把大部分屬性輸出來,把它貼出來。

     

    如果你逐步模式正常,裡面最大差異可能在於你讀取的目標檔案是否是由別的程式完成寫入。
    2008年4月17日 下午 02:37
    版主
  • Public Function ReadingSetting(ByVal S As String) As String
            Dim f As New FileInfo(Form1.dir.FullName & "\Setting\Setting.txt")
            Dim Setting_Value As String
            SR = f.OpenText
            Dim Got As Boolean = False
            Do While (SR.Peek >= 0 Or Not Got)
                Dim temp As String = SR.ReadLine

                If temp isnot nothing andalso temp.StartsWith(S) Then
                    temp = RTrim(temp)
                    Setting_Value = temp
         Got = True
                End If
            Loop
            Return Setting_Value
        End Function

     

    改成這樣試試看

    2008年4月18日 上午 01:25
  • 我最後把if那段code改這樣了
                If (InStr(temp, S) <> 0) Then
                    temp = Replace(temp, S, "")
                    temp = LTrim(temp)
                    Setting_Value = temp
                    Got = True
                End If
    不過見鬼了
    我改成上面那段code run了一次
    之後再改回r我原先的cod 再run一次
    試試璉璉的建議
    但一切又回復正常了= =a
    謝謝各位
    2008年4月22日 上午 09:40