Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zur Laufzeit vorher undefinierten Code ausführen


Ivo@CoMRoK - Do 02.02.06 17:58
Titel: Zur Laufzeit vorher undefinierten Code ausführen
Hi also ich hab mir gadacht es wär doch lustig mal n Programm zu schreiben so für Dateizugriff und so, was
wie ne Komandozeile funz aber auf Delphi "denkt".
Also das solte so sein, dass man nen Code in n RichEdit schreict und aufn Button drückt und was passiert.
Das wär natürlich nur eingeschränkt möglich, da z.b. Variablen nicht definiert und so aber des würd schon klappten.
Nur: Wie kann ich des machen das ich Delphi n Befehl geb wie (keine Ahnung z.B. sowas wie:)

Delphi-Quelltext
1:
2:
3:
4:
procedure Ausführen;
begin
DelphiCode(RichEdit1.Text);
end;

Gibts da n Befehl?


Christian S. - Do 02.02.06 18:52

Hallo!

Standardlösung für dieses Problem ist eine Scriptengine. Mir fiele da auf Anhieb das Innerfuse Pascal Script ein (so hieß es, glaube ich). Gibt aber bestimmt noch andere, einfach mal im Forum suchen, das Thema gab es schon öfters.

Eine andere, sehr interessante Herangehensweise an das Problem ist jedoch auch hier [http://www.delphi-forum.de/viewtopic.php?t=54738] von user profile iconalzaimar beschrieben worden. Das ist auf jeden Fall einen längeren Blick wert ;-)

Grüße
Christian


JayK - Do 02.02.06 18:54

Also du könntest nur wenige Befehle zulassen und dann sehen, was drin steht (wenn da steht 'MessageDlg(' dann gucke, was dahinter kommt und verfahre entsprechend)

Den Code richtig ausführen geht nicht, den müsste er ja erst Compilieren. Also kannst du höchstens versuchen, das Prog so weit zu kriegen, dass es mit vorgegebenen einprogrammierten Möglichkeiten den Editinhalt vergleicht.

Och Mensch, wie soll man das beschreiben? :bawling:

|EDIT: an sowas, was Christian meinte hab ich nun nicht gedacht -.-


Ivo@CoMRoK - Do 02.02.06 20:29

Danke für die schnellen Antworten!
Was alzaimar da gebastelt hat sieht ja echt interessant aus!
Nur: Ich hab nur Delphi3.
Aber die Idee alles selbst anzugeben ist auch nicht schlecht.
Infach und gut :D .
Okay ich werds halt auf diese Weise machen.
THX