-3
Imports System.IO
Public Class ReadAndInterpret
'File dialog part
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
OpenFileDialog1.ShowDialog()
TextBox1.Text = OpenFileDialog1.FileName
End Sub
'Set up the interpretator
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim ClowsReader As New StreamReader(TextBox1.Text)
Do While ClowsReader.Peek() <> -1
Dim TextLine As String
TextLine = ClowsReader.ReadLine() & vbNewLine
'The function/variable interpreter part
If TextLine.Contains("var") Then
Dim CheckVarName As String = TextLine.Split(" ")(1)
Dim CheckVarVal As String = TextLine.Split(CheckVarName & "=")(1)
ElseIf TextLine.Contains("MsgBox") Then
Dim CheckLine As String = TextLine.Split(">")(1)
MsgBox(CheckLine)
If CheckLine.Contains(CheckVarName) Then
MsgBox(CheckVarName)
End If
End If
Loop
End Sub
End Class
所以這是我在VB.NET中編寫的腳本語言解釋器的代碼。只有MSGBOX和可變功能(尚未完成)。在此代碼它給沒有被定義CheckVarName的錯誤,即使它是在代碼中定義局部變量未定義 - VB.Net
Dim CheckVarName As String = TextLine.Split(" ")(1)
。
有誰知道爲什麼說CheckVarName沒有定義? (它提供了錯誤的這部分代碼):
If CheckLine.Contains(CheckVarName) Then
MsgBox(CheckVarName)
End If
編程101 - 變量範圍https://msdn.microsoft.com/en-us/library/1t0wsc67.aspx我不想成爲否定的,但也許你應該完全理解一種語言在編寫語言解釋器之前是如何工作的 – Steve
正確的縮進可以幫助您看到您已經在另一個塊(「If」的第一部分)中定義了「CheckVarName」。 –
'儘管它已被定義'但是它被定義在if塊*內部。因此,*對於else塊*不可見。請**學習基礎知識**。 –