2016-10-09 2 views
-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で作成しているスクリプト言語解釈プログラムのコードです。メッセージボックスと変数関数のみが存在する(まだ行われていない。)このコードでは、それがコード内ローカル変数が定義されていません - VB.Net

Dim CheckVarName As String = TextLine.Split(" ")(1) 

に定義されていても、定義されていないCheckVarNameの誤差を与えます。

CheckVarNameが定義されていないと誰が知っていますか? (これは、コードのこの部分でエラーが発生します):

 If CheckLine.Contains(CheckVarName) Then 
      MsgBox(CheckVarName) 
     End If 
+6

プログラミング101 - 変数の範囲https://msdn.microsoft.com/en-us/library/1t0wsc67.aspx私は否定的ではありませんが、言語インタープリタを書く前に言語の仕組みを完全に理解する必要があります – Steve

+0

適切な字下げは、別のブロック( 'If'の最初の部分)で' CheckVarName'を定義したことを確認するのに役立ちます。 –

+0

'定義されていても 'ですが、ifブロックの中で定義されています*。したがって、* elseブロックには表示されません*。 **ファンダメンタルズを学んでください**。 –

答えて

0

はちょうどこのように、tはあなたのクラスのトップであなたの変数を宣言する必要があります。

Public Class ReadAndInterpret 
    Dim CheckVarName As String = TextLine.Split(" ")(1) 
    ... 

ちょうどそれが自分のために幸運を役に立てば幸い!

関連する問題