| Autor |
Beitrag |
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Do 10.09.09 15:43
|
|
Gewuerzgurke
      
Beiträge: 152
Win XP
Lazarus
|
Verfasst: Do 10.09.09 16:58
Hihi, der Link ist echt klasse!
Ich hatte es mit mäßigem Erfolg hier im Forum versucht...
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Fr 11.09.09 17:59
MephistoFFF hat folgendes geschrieben : | Hallo! Im PHP gibt es eine Möglichkeit, dass man einen String so behandelt, als wäre es Sourcecode.
Nun meine Frage: Ist dies auch im Delphi möglich? Also z.B.: ich habe ein Editfeld, und trage dort "showmessage('Hallo');" ein. Delphi soll diesen String nun z.B. nach klicken eines Buttons so behandeln, als wäre es Sourcecode, also dass jetzt im Bsp. die Message "Hallo" aufpoppt.
Ich brauche das ganze natürlich nicht, um messages anzuzeigen^^.
Bin für jede Hilfe dankbar.
mfG |
Also gehen tuts schon, aber mit ein wenig Aufwand. Ich hatte einen Parser entwickelt, der die Stringeingaben zu Token wandelte und quasi die Ausführung simulierte. Vorteil bei der Sache war, dass meine User sich jederzeit einen eigenen Vorrat an Befehlen zulegen konnten. Es gab eine öffentliche Tokenliste, in die jeder freie Plätze mit Token und Anweisungen/Parameter belegen konnte. Letztlich interpretierte der Parser fast einen Satz in Umgangssprache mit eingeschränktem (mehr themenbezogenem) Wortschatz. Leider habe ich diesen Parser so in das in das Hauptprogramm verzahnt, dass eine eigenständige Unit kaum man noch herausdestilliert werden könnte. War aber eine schöne Übung, wollte einfach wissen, ob ich es hinkriege.
Gruß Delphi10
_________________ Salus populi suprema lex esto
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Fr 11.09.09 20:53
_________________ Na denn, dann. Bis dann, denn.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 11.09.09 21:47
alzaimar, hier fehlt eine Funktion zum bookmarken eines Posts 
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Fr 11.09.09 21:57
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 11.09.09 22:30
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Fr 11.09.09 22:55
alzaimar hat folgendes geschrieben : | delphi10 hat folgendes geschrieben : | | ... Leider habe ich diesen Parser so in das in das Hauptprogramm verzahnt, dass eine eigenständige Unit kaum man noch herausdestilliert werden könnte... |
Neulich habe ich aus Spass einen Compiler geschrieben, den ich per USB und Klingeldraht direkt an meine Schläfenlappen gekoppelt habe. Dadurch konnte ich mir das Tippen sparen und habe mir einfach ein Problem ausgedacht: Schwupps, war die EXE zur Problemlösung fertig. Letztendlich war mir das aber zu langweilig, also habe den Prototypen wieder eingestampft und aus dem Klingeldraht lieber dufte Zahnstocher gebaut. War ne lustige Übung. Schade, das ich den Quellcode entsorgt habe, denn den brauchte ich ja ursprünglich nicht mehr.  |
Kann es sein, dass du irgend etwas falsch oder überhaupt nicht verstanden hast? Möglicherweise tritt aber hier wieder der Effekt auf, über alles zu lachen, was man nicht versteht, oder noch wahrscheinlicher ist die Einstellung "was ich nicht kann, kann auch kein anderer".
Letztlich kann ich aber dem MephistoFFF die entsprechenden Passagen aus dem Hauptprogramm verfügbar machen, eine Unit wird er sich dann selber basteln müssen. Du kannst dann ja helfend eingreifen, wäre ja mal eine wohltuende Abwechslung zu kindischem Geschwafel.
Ah ja, noch etwas alzaimar, tu mir einen Gefallen - ignoriere mich noch nicht einmal.
Für alle anderen lesender User hier sei gesagt, dass ich meinen Post einfach so runtergeschrieben habe ohne mir groß Gedanken über eine eventuelle Fehlinterpretation gemacht zu haben - das Programm ist genau so entstanden, wie ich es beschrieben hatte.
Ich habe es unter erhebliche Zeitdruck mit meinen Team (4MA) entwickelt. Es enthält ca. 200.000 Zeilen, davon entfallen auf den Parser/Tokenizer und Interpreter etwa 14.000 Zeilen+Assembler. Aber vielleicht habe ich MephistoFFF einen kleinen Stubs in die richtige Richtung gegeben. Ich kann mir vorstellen, dass er auf deinen Klingeldraht verzichten möchte.
Yogu, sorry, habe ich erst hinterher gelesen.
_________________ Salus populi suprema lex esto
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Fr 11.09.09 23:32
delphi10 hat folgendes geschrieben : | MephistoFFF hat folgendes geschrieben : | Hallo! Im PHP gibt es eine Möglichkeit, dass man einen String so behandelt, als wäre es Sourcecode.
Nun meine Frage: Ist dies auch im Delphi möglich? Also z.B.: ich habe ein Editfeld, und trage dort "showmessage('Hallo');" ein. Delphi soll diesen String nun z.B. nach klicken eines Buttons so behandeln, als wäre es Sourcecode, also dass jetzt im Bsp. die Message "Hallo" aufpoppt.
Ich brauche das ganze natürlich nicht, um messages anzuzeigen^^.
Bin für jede Hilfe dankbar.
mfG |
Also gehen tuts schon, aber mit ein wenig Aufwand. Ich hatte einen Parser entwickelt, der die Stringeingaben zu Token wandelte und quasi die Ausführung simulierte. Vorteil bei der Sache war, dass meine User sich jederzeit einen eigenen Vorrat an Befehlen zulegen konnten. Es gab eine öffentliche Tokenliste, in die jeder freie Plätze mit Token und Anweisungen/Parameter belegen konnte. Letztlich interpretierte der Parser fast einen Satz in Umgangssprache mit eingeschränktem (mehr themenbezogenem) Wortschatz. Leider habe ich diesen Parser so in das in das Hauptprogramm verzahnt, dass eine eigenständige Unit kaum man noch herausdestilliert werden könnte. War aber eine schöne Übung, wollte einfach wissen, ob ich es hinkriege.
Gruß Delphi10 |
Grummel, das sollte eigentlich in das erste Posting.
Edit: Typische Befehlszeilen lasen sich etwa so:
OEFFNE ORNER XYZ UND LADE DATEI ABC.DOC
ERZEUGE EIN PDF UND SENDE AN eMAIL@ADRESSE
WENN VERSAND OK DANN MELDUNG1
WENN VERSAND NICHT OK DANN MELDUNG2
Es gab einen Wortschatz von jeweils 100 - 150 KeyWords zu verschiedenen Aufgabengebieten. Daraus konnte jeder User seine Sequenzen zusammenbauen und als Script ablaufen lassen. Mal etwas vereinfacht dargestellt.
_________________ Salus populi suprema lex esto
|
|
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: Sa 12.09.09 01:45
Zurück zu der Frage mit dem Funcktionsnamen und der DLL...
Wenn man eine DLL dynamisch lädt, dann sieht das ja ungefähr so aus :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| Handle := LoadLibrary('MeineDLL.dll'); If Handle <> 0 Then begin @AProcAddr := GetProcAddress(Handle, 'Procedure1'); If Assigned(APRocAdress) Then AProcAddr; FreeLibrary(Handle); end; |
Technisch gesehen kannst Du den 2. parameter bei GetProcAdress ja als PChar-Variable mit dem übergeben, was Du gerade aufrufen willst.. Musst die proceduren ja einfach nur entsprechend mit diesen Namen in der DLL exportieren.
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
|