2016-10-09 4 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 

Also das ist der Code für meine Skriptsprache Dolmetscher ich mache in VB.NET. Es gibt nur MsgBox und variable Funktion (noch nicht fertig.) In diesem Code einen Fehler von CheckVarName gibt nicht definiert ist, obwohl esLokale Variable ist nicht definiert - VB.Net

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

im Code.

Weiß jemand warum, warum CheckVarName nicht definiert ist? (Es gibt den Fehler in diesem Teil des Codes):

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

Programmierung 101 - Variable Umfang https://msdn.microsoft.com/en-us/library/1t0wsc67.aspx Ich möchte nicht negativ sein, aber vielleicht sollten Sie vollständig verstehen, wie eine Sprache funktioniert, bevor Sie einen Sprachinterpreter schreiben – Steve

+0

Die richtige Einrückung würde Ihnen helfen zu sehen, dass Sie 'CheckVarName' in einem anderen Block definiert haben (der erste Teil des' If'). –

+0

'obwohl es definiert ist 'Aber es ist * innerhalb des if-Blocks * definiert. Daher * ist es für den else-Block * nicht sichtbar. Bitte ** lernen Sie die Grundlagen **. –

Antwort

0

Nur müssen t Ihre Variable an der Spitze der Klasse erklären, wie folgt aus:

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

Hoffe nur, dass es für sich selbst viel Glück hilft !

Verwandte Themen