String als Code ausführen

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von xored.

    String als Code ausführen

    Moin zusammen

    Alles was ich möchte ist folgenden String als Code ausführen lassen.

    Quellcode

    1. Dim myString As String = "myResult_" & index & ".Text = " & 12


    der String wird mit Hilfe der msgbox korrekt ausgegeben aber ich krieg es nicht hin ihn ausführen zu lassen.

    Habe schon versucht mit

    Quellcode

    1. Console.WriteLine(myString)
    2. Console.Write(myString)


    Es gibt zwar keine Fehlermeldung aber leider auch sonst keine Reaktion.

    Kann mir jemand auf die Sprünge helfen?

    thx
    @meuse Willkommen im Forum. :thumbup:
    Was soll denn mit diesem "Code" passieren?
    Was soll dieser "Code" bewirken?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Der Code soll in einer for Schleife n Textfelder füllen.

    Die Felder haben alle den Namen myResult_ und am Ende eine Zahl also myResult_1, myResult_2 etc.

    wenn ich es Zeile für Zeile schreibe, funzt es tadellos aber bei 30 Feldern wäre es schon schön wenn ich es über eine Schleife laufen lassen könnte die hochzählt.

    aber Grundsätzlich ist es egal für was der Code macht. Ich bekomme nicht mal ein "Hello World" gebacken.
    Wenn ich das richtig verstehe willst du, dass myString den Inhalt eines bestimmten Objektes, hier myResult_ & index, bekommt. Richtig?

    Versuche mal:

    Quellcode

    1. Dim myString As String = "myResult_" & index & ".Text.toString"


    Was deine 12 am Ende bedeutet erschließt sich mir nicht. Wenn die auch mit rein soll dann musst du sie natürlich auch in "" setzen.

    meuse schrieb:

    ich möchte, dass der Inhalt des Strings als Programm ausgeführt wird.
    Ich denke mal, dass Dir das zwar vorschwebt, dass Du das aber nicht willst.
    Pack Deine Controls in ein Array, bau eine Schleife über alle diese Controls und befülle die .Text-Property in der Schleife:

    VB.NET-Quellcode

    1. Dim labels() = { Label1, Label2, Label3 }
    2. For i = 0 To labels.Length - 1
    3. labels(i).Text = i.ToString()
    4. Next
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Takafusa Das ist mir völlig klar, aber er kann es nicht.

    meuse schrieb:

    dass der Inhalt des Strings als Programm ausgeführt wird.
    Ganz einfach:
    CodeDom.
    Ich bin dann mal draußen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    meuse schrieb:

    Nein Sorry aber ich möchte, dass der Inhalt des Strings als Programm ausgeführt wird.

    so in der Art runcode(myString)


    Ich vermute mal, dass du so eine Funktionalität von einer anderen Programmiersprache als VB kennst.

    Im Visual Basic ist dies nicht möglich, weil der Code zunächst kompiliert und gelinkt wird. Erst dann kann so ein Programm ausgeführt werden.

    Es gibt aber Sprachen, die werden nicht (unbedingt) kompiliert, sondern interpretiert. So eine Sprache ist z.B. REXX. Da wird der Maschinencode aus dem Source Code Zeile für Zeile während der Ausführungszeit erstellt. Statt eines Kompilers wird hier ein Interpreter verwendet. Und dann kann man natürlich einen Sring per Programm befüllen und dann zur Ausführung übergeben. Im REXX beispielsweise heißt diese Anweisung INTERPRET.

    Tja, und weil es in VB und Konsorten keinen Interpreter gibt, geht das was du vor hast schlicht und ergreifend nicht. Jedenfalls nicht so, wie du dir das vorstellst.

    Aber offen gestanden, scheint mir dein Programm das auch gar nicht wirklich zu benötigen ! Da solltest du dich einfach mit VB beschäftigen, um zu verstehen, welche Konstrukte du in diesem Umfeld verwenden kannst.

    Neu

    Ich wusste irgendwann kann ich es verlinken :saint:

    CodeDOM Tool - Sinn?

    Du kannst schon "Strings als Code" ausführen, dafür musst du aber zwingend eine Binary erstellen, was schon schade ist. Hatte mich damit auch mal befasst, aber es gibt keinen Weg
    jeden Code einfach zur Laufzeit auszuführen. Es gibt Möglichkeiten, da kannst du zur Laufzeit Funktionen erstellen, welche dir was returnen, ist aber wie schon oft vorher gesagt einfach unsinnig
    für dein Vorhaben.

    Also entweder du erstellst eine Binary mit CodeDOM, oder du suchst dir nen anständigeren Weg :)

    Gruß,
    xored