VB-Code in String ausführen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von singu.

    VB-Code in String ausführen

    Ich programmiere momentan an einem Editor, es ist kein Editor wie z.B. Notepad oder ähnliches. Der Editor hat Funktionsblöcke. Jeder Funktionsblock hat seinen eigenen VB-Code als Vorlage. Nun möchte ich den Code, den ich als String von den Funktionsblöcken bekomme, ausführen.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    3. Dim code As String = Nothing
    4. code = "If Value <> 0 Then" & vbCrLf
    5. code &= vbTab & "DreheInRichtung(Zufall.Zahl(360))" & vbCrLf
    6. code &= vbTab & "GeheGeradeaus()" & vbCrLf
    7. code &= "Else" & vbCrLf
    8. code &= vbTab & "GeheZurück()" & vbCrLf
    9. code &= "End If"
    10. Me.RunCode(code)
    11. End Sub
    12. Public Sub RunCode(ByVal code As String)
    13. ' Hier sollte nun der Code aus dem Parameter "code" ausgeführt werden
    14. End Sub
    15. End Class
    Dazu musst du den Code noch in eine Klasse+Methode/Funktion einfügen, dann kannst du per CodeDom das ganze(im Speicher) kompilieren und die entsprechende Methode ausführen...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Das mit dem CodeDom habe ich mir auch schon überlegt. Eine andere Möglichkeit gibt es nicht? Weil ich möchte ungern, eine komplette Klasse schreiben, weil diese würde dann noch anderen Code enthalten, der für den Programmablauf zuständig ist
    Das ist nicht das Problem. Ich beschreibe kurz die Logik des Editors.

    Es gibt ein Editor und eine Programm, mit dem Editor kann man über Funktionsblücke den Code zusammenstellen, dieser wird dann in einer Xml-Datei gespeichert. Das Programm liest nun die Xml-Datei aus, generiert den fertigen Code und führt diesen aus. Und dieser fertige Code befindet sich dann in einem String
    Du kannst die Funktionen in deinem Programm in eine Klasse packen. Dann gibst du dein Programm bei CodeDom als referenzierte Assembly an und leitest die Klasse im String von deiner Funktionsklasse ab. Das sollte (hoffentlich) funktionieren.

    Viele Grüße, Phil.
    Ich werd mir das mit dem CodeDom nochmals genauer anschauen. Ich hab mir überlegt, das ich es über eine Assembly mache, diese liegt im Speicher. Die Assembly hat die wichtigsten Assembly importiert und hat eine Funktion die dann ausgeführt wird.