Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - user-eingabe in richedit als quellcode-befehl interpretieren


mick - Di 16.02.10 16:36
Titel: user-eingabe in richedit als quellcode-befehl interpretieren
hallo zusammen -

meine frage:
ich habe eine turtle programmiert. neben der "leinwand" (image) der turtle ist ein richedit platziert, in dem der user waehrend der laufzeit eingaben machen kann. ich moechte nun diese eingaben zeilenweise als befehle interpretieren fuer die turtle.
oder anders ausgedrueckt: eine user-eingabe in einem eingabefeld soll ausgelesen und so interpretiert werden, als stuende sie als exakt dieser befehl im quellcode an der stelle (prozedur), wo die eingabe ausgelesen wird.

geht das?


beste gruesse,
mick.


martin300 - Di 16.02.10 16:45

Hallo,
wenn es für die Turtle etwas gibt das so (oder ähnlich) aussieht:

Delphi-Quelltext
1:
procedure KommandosAbarbeiten (Value:String)                    

könntest du die procedure mit dem Text der im Richedit steht zeilenweise übermitteln.


mick - Di 16.02.10 16:59

danke fuer den hinweis, aber ich muss gestehen, dass ich nicht verstehe, wie das aussehen soll. braeuchte nochmals hilfe.

gruss,
mick.


Gausi - Di 16.02.10 17:11

Wenn es so eine Kommando-Abarbeiten-Methode nicht gibt (davon gehe ich eigentlich aus), dann muss man sich das selber basteln. Dazu muss man die einzelnen Befehle, die es gibt, mit Pos und Copy auseinanderfriemeln, um aus dem String den Befehl und mögliche Parameter zu bekommen.

Beispiel: Im RichEdit steht was von MachWas(13,37). Dann musst du dir eine Methpode basteln, die so einen String zerlegt in "Funktion" und "Paramter1", "Parameter2". Und dann geht das in etwa so weiter:


Delphi-Quelltext
1:
2:
if Funktion = 'MoveXY' then
  MoveXY(Parameter1, Parameter2);


Ist nicht ganz trivial, aber da die Turtle afaik nur begrenzte Möglichkeiten hat, ist das noch halbwegs machbar. ;-)


mick - Di 16.02.10 17:27

hallo -

ja, so weit war ich auch schon. hm. das ist sehr unschoen. wuerde das dann nun so implementieren. dennoch frage ich nochmals in die runde, da sich beide antwort-geber explizit auf die turtle als kontext bezogen haben: es muss ja nicht um turtle gehen, sondern um die allgemeine frage, ob eine usereingabe zur laufzeit als quellcode-befehl in der aktuellen codestelle interpretiert werden kann. da liefert delphi anscheinend nichts mit?

beste gruesse,
mick.


Gausi - Di 16.02.10 17:30

Nein, so etwas ist in Delphi nicht vorgesehen. Es gibt iirc aber Parser-Komponenten/-Units die so etwas bis zu einem gewissen Grad können.


Jakob_Ullmann - Di 16.02.10 18:07

Ich werf eindach mal RemObjects PascalScript in die Runde. :wink:

Ansonsten ist das aber nicht möglich, da Delphi nicht interpretiert sondern compiliert wird. Wenn du das Programm ausführst, weiß Windows nicht mehr, wie dein Quellcode ausgesehen hat und es hat auch keinen Delphi-Compiler zur Hand. Du könntest höchstens den FreePascal-Compiler mitliefern. Bei interpretierten Programmiersprachen ist das durchaus möglich, PHP bietet dafür zum Beispiel einen Befehl an.


DonManfred - Mi 17.02.10 07:34

Bitte auf Crossposts [http://www.delphipraxis.net/topic173693_usereingabe+in+richedit+als+quellcodebefehl+interpretieren.html] hinweisen...


mick - Mi 17.02.10 21:20

alles klar.

besten dank,
mick.