2013-04-28 27 views
2

你好,我想做一個聊天,我在互聯網上搜索,我最終發現了一些可能的工作。但現在我得到的名字,它說變量名使用它分配一個值變量'名稱'被使用之前它已被分配一個值

代碼之前的錯誤:

Public Sub findForm1() 

    If Trim(Mid(My.Forms.Private1.Text, My.Forms.Private1.Text.Length - 2)) = formNo Then 
     My.Forms.Private1.RichTextBox1.Text = My.Forms.Private1.RichTextBox1.Text & poruka + vbCrLf 

    ElseIf Trim(Mid(My.Forms.Private2.Text, My.Forms.Private2.Text.Length - 2)) = formNo Then 
     My.Forms.Private2.RichTextBox1.Text = My.Forms.Private2.RichTextBox1.Text & poruka + vbCrLf 

    Else 
     If My.Forms.Private1.Visible = False Then 
      Dim name As String 
      For i As Integer = 1 To poruka.Length 
       If Mid(poruka, i, 2) = ": " Then 
        Exit For 

        name = name & Mid(poruka, i, 1) 
       End If 
      Next 
      My.Forms.Private1.Show() 
      My.Forms.Private1.Text = Trim(name) & " " & br 
      My.Forms.Private1.RichTextBox1.Text = My.Forms.Private1.RichTextBox1.Text & poruka + vbCrLf 
     Else 
      Dim name As String 
      For i As Integer = 1 To poruka.Length 
       If Mid(poruka, i, 2) = ": " Then 
        Exit For 
       End If 
       name = name & Mid(poruka, i, 1) 
      Next 
      My.Forms.Private2.Show() 
      My.Forms.Private2.Text = Trim(name) & " " & br 
      My.Forms.Private2.RichTextBox1.Text = My.Forms.Private2.RichTextBox1.Text & poruka + vbCrLf 
     End If 
    End If 

    formNo = Nothing 
    poruka = Nothing 

End Sub 

我怎樣才能解決這個錯誤? 我已經試圖移動結束,如果和改變一些結束,如果。 但仍然沒有找到正確的代碼請幫助。

回答

2

是的,編譯器是絕對正確的。在你的代碼的問題可以歸結爲這樣的事:

Dim name as String 
name = name & "Foo" 

你試圖用另一個字符串(「富」)來連接的name當前值 - 但name沒有有價值。

你可以將其更改爲:

Dim name as String = "" 
name = name & "Foo" 

...但你會更好使用StringBuilder。因此,例如,您的第一個循環可能是:

Dim nameBuilder As StringBuilder = New StringBuilder() 
For i As Integer = 1 To poruka.Length 
    If Mid(poruka, i, 2) = ": " Then 
     Exit For 

     nameBuilder.Append(Mid(poruka, i, 1)) 
    End If 
Next 
My.Forms.Private1.Show() 
My.Forms.Private1.Text = Trim(nameBuilder.ToString()) & " " & br 
+0

哈哈謝謝我已經解決了這個問題,但你已經解釋給我了。我試過的是昏暗的名字作爲字符串=沒有和它的工作我不知道爲什麼,但它一直工作到現在XD – 2013-04-29 14:54:26

0

問題是有幾個方案可能導致您的變量永遠不會被初始化。要解決這個問題,只需給出默認值,例如

Dim Name As String = "" 

另外,您要重新聲明同一個變量兩次,你只需要,如果你需要它是「空白」,爲下一個循環或使用2個獨立的變量(再這樣做一次,只是將其清除而是更具體地命名)。

+0

你的意思是''「',而不是''''。而且這不僅僅是循環結束 - 循環中還有*。 – 2013-04-28 11:32:59

+0

@JonSkeet是啊,我意識到,在我發佈後,在我的通用移動設備上:)我更新爲更一般,因爲我沒有注意到它在外部使用也是如此。 – James 2013-04-28 11:39:59

相關問題