PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Text als Code ausführen?


Plutos
2007-07-05, 12:19:39
Heyhey,

ist es irgendwie möglich (in VB 2005, falls das eine Rolle spielt), Text - den der User z.B. in irgend eine Text-/Eingabefeld eingibt - als Code auszuführen? Das setzt natürlich die Korrektheit der Eingabe vorraus.
Also z.B., zur Laufzeit exisitiert eine Variable i, die den Wert 5 hat. Der User gibt nun in ein Eingabefeld ein "i=10" und klickt einen Button, woraufhin dieser Text ("i=10") als Code ausgeführt werden soll, so dass die Variable i danach den Wert 10 hat.

Geht das?

Chaos_deluxe
2007-07-05, 12:28:06
Das dürfte prinzipiell nur mit reinen Interpreter-Sprachen funktionieren, da du zur Laufzeit nichts neu kompilieren kannst.

Chaos_deluxe
2007-07-05, 12:32:25
Es müsste auch möglich sein, den Inhalt der Eingabe in eine Datei zu schreiben und diese dann automatisch mit einem Skript zu compilieren und auszuführen. Es gibt möglicherweise auch Debugger, mit denen du den Inhalt von variablen verändern kannst.
Wozu möchtest du das denn genau machen?

Plutos
2007-07-05, 12:39:21
Es müsste auch möglich sein, den Inhalt der Eingabe in eine Datei zu schreiben und diese dann automatisch mit einem Skript zu compilieren und auszuführen. Es gibt möglicherweise auch Debugger, mit denen du den Inhalt von variablen verändern kannst.
Wozu möchtest du das denn genau machen?

Der Hintergrund ist folgender:
ich bastel' im Wesentlichen die GUI für eine Simulations-Software, die diverse Berechnungen anstellt. Dazu soll es möglich sein, dass der User einige der Gleichungen, die zur Berechnung verwendet werden, selbst vorgibt.

Beispiel: Values ist in diesem Fall ein Array, der User gibt dann z.B. an:
Values(t)=1/2*(Values(t-1)+Values(t-2))
Dann soll natürlich im Array der Wert für t entsprechend korrekt berechnet werden, ohne dass diese Zeile im Quellcode verankert ist.

In einem ähnlichen Projekt wurde das mit LUA gelöst, davon habe ich allerdings a) wenig Ahnung und b) würde ich gerne möglichst nahe an der VB-Syntax bleiben (da meine Zielgruppe damit durch Excel/VBA schon halbwegs zurechtkommt).
Einen zuverlässigen (und möglichst noch intelligenten, Falscheingaben erkennenden) Textparser zu schreiben, halte ich nicht für den effektivsten Weg.

Edit: wäre das über VBScript möglich?

Gast
2007-07-05, 13:09:14
im prinzip willst du also das aus vielen dynamischen sprachen bekannte eval statement. hab jetz nur folgenden link gefunden: http://www.codeproject.com/dotnet/evaluator.asp

desweiteren solltest du dir mal die klasse VBCodeProvider anschauen, die scheint eine schnittstelle zum compiler anzubieten.

Plutos
2007-07-05, 13:21:15
im prinzip willst du also das aus vielen dynamischen sprachen bekannte eval statement. hab jetz nur folgenden link gefunden: http://www.codeproject.com/dotnet/evaluator.asp

desweiteren solltest du dir mal die klasse VBCodeProvider anschauen, die scheint eine schnittstelle zum compiler anzubieten.

Du bist mein Held des Monats :smile:.