Autor Beitrag
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Do 10.09.09 15:43 
Gewuerzgurke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 152

Win XP
Lazarus
BeitragVerfasst: Do 10.09.09 16:58 
Hihi, der Link ist echt klasse!

Ich hatte es mit mäßigem Erfolg hier im Forum versucht...
delphi10
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Fr 11.09.09 17:59 
user profile iconMephistoFFF hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 11.09.09 20:53 
user profile icondelphi10 hat folgendes geschrieben Zum zitierten Posting springen:
... 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. :lol:

_________________
Na denn, dann. Bis dann, denn.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 11.09.09 21:47 
user profile iconalzaimar, hier fehlt eine Funktion zum bookmarken eines Posts :rofl:
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Fr 11.09.09 21:57 
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconalzaimar, hier fehlt eine Funktion zum bookmarken eines Posts :rofl:

Äh, nein ;)
Neben dem "Verfasst am:" gibt es nen kleines unschuldiges Symbol, hinter dem sich ein Link auf diesen bestimmten Post verbirgt - den kannst du dir gerne bookmarken :D

Aber die Story find ich auch echt cool :D

_________________
PROGRAMMER: A device for converting coffee into software.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 11.09.09 22:30 
user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconalzaimar, hier fehlt eine Funktion zum bookmarken eines Posts :rofl:

Äh, nein ;)
Neben dem "Verfasst am:" gibt es nen kleines unschuldiges Symbol, hinter dem sich ein Link auf diesen bestimmten Post verbirgt - den kannst du dir gerne bookmarken :D

Ich meinte eher so etwas wie ein gobales Archiv in der Entwicker-Ecke für immer wieder lustige und themenbezogene Beiträge :mrgreen:

Aber dieser Beitrag ist schon nicht mehr ganz so themenbezogen... also Schluss mit dem Off-Topic
delphi10
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Fr 11.09.09 22:55 
user profile iconalzaimar hat folgendes geschrieben Zum zitierten Posting springen:
user profile icondelphi10 hat folgendes geschrieben Zum zitierten Posting springen:
... 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. :lol:


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 user profile iconMephistoFFF 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 user profile iconalzaimar, 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 user profile iconMephistoFFF einen kleinen Stubs in die richtige Richtung gegeben. Ich kann mir vorstellen, dass er auf deinen Klingeldraht verzichten möchte.

user profile iconYogu, sorry, habe ich erst hinterher gelesen.

_________________
Salus populi suprema lex esto
delphi10
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Fr 11.09.09 23:32 
user profile icondelphi10 hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconMephistoFFF hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: 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 :

ausblenden 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