Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zur lLaufzeit Code kompilieren und zuweisen..... (https://www.delphipraxis.net/73171-zur-llaufzeit-code-kompilieren-und-zuweisen.html)

zwaem86 13. Jul 2006 09:02


Zur lLaufzeit Code kompilieren und zuweisen.....
 
Hi,

kann mir einer sagen wie man zur Laufzeit einen Codefetzen kompilieren kann und dann an ein Ereignis hängt.

Gibt es dafür vllt. 'ne Komponente..........(freeware natürlich)?

Grüße
zwaem

RavenIV 13. Jul 2006 09:20

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
Könntest Du Deine Frage bitte ausführlicher formulieren?
ich habe da kein Wort verstanden...

richard_boderich 13. Jul 2006 09:25

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
also das wird wohl nich ganz soeinfach werden. ich denke mal besser waere es die routine gleich in
assembler zu schreiben bzw. vorcompilierte codesteucke zu verwenden. als naechstes muesstest du den
code in den speicher laden, und vor der ausfuehrung den EIP auf die einsprungadresse deiner routine setzten. und da liegt der hase im feld begraben. ich weis naehmlich nicht ob es unter
NTx.x systemen so einfach machbar ist. (siehe getrennte speicherbereiche) dazu gibst andere experten. ich denk mal olli oder assarbad waeren da die richtigen ansprechpartner.

gruß richard

himitsu 13. Jul 2006 09:27

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
Er möchte zur Laufzeit Code ausführbaren Code erzeugen und ausführen.

Schau mal nach den verschiedenen Mathearsern hier, da gibt es z.B. so'nen kompilierenden von DAX ... die machen sozusagen soetwas (wenn ich mich nicht irre)

arbu man 13. Jul 2006 09:31

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
oder der JvInterpreter der JEDIs

kalmi01 13. Jul 2006 09:33

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
oder DelphiWebScript

mgero 13. Jul 2006 19:47

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
oder Pascal Script von remobjects

Gruss,

Marco

Dax 13. Jul 2006 20:10

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
Zitat:

Zitat von mgero
oder Pascal Script von remobjects

Nein. Alle gelisteten Interpreter erzeugen (meines Wissens nach, hab mir nicht alle angesehen - DWS fehlt mir noch ;)) keinen Maschinencode. Sie interpretieren lediglich einen Pascal-Code, der ihnen zugeworfen wird. Dazu wandeln sie den Code in Bytecode um, der abgearbeitet wird - von ganz normalen Methoden. .NET macht das ähnlich, allerdings hängt dort hinter dem Bytecode ein JIT-Compiler, der wirklich Maschinencode erzeugt.
Das einzig Maschinencodige(^^) am ROPS zum Beispiel ist der Stackaufbau für Funktionsaufrufe. Allein deswegen kann man aus ROPS Funktionen aufrufen, die kein festgelegtes Parameterformat haben - man übergibt ROPS die Parameter und entsprechend baut der Interpreter den Stack auf.
Beim JvInterpreter zum Beispiel hat eine Funktion, die in den Interpreter geklinkt wird, einen Arrayparameter, in dem alle Parameter drin sind, die im Interpreter in die Funktion geworfen werden.

Ist jetzt zwar bisschen Eigenlob und Promotion, aber seis drum :mrgreen: : Hier im Forum suchenHAM mit dem Assembler-Plugin und der Hier im Forum suchenECQP erzeugen wirklich Maschinencode :)

lg, Dax

PS: haut mich bitte nicht, falls ich damit falsch liege, es ist schon ne Weile her, das ich mit die Interpreter angekuckt hab. Korrigieren ist viel netter ^^

GimbaR 13. Jul 2006 23:14

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
Zitat:

Zitat von richard_boderich
...ich denk mal olli oder assarbad waeren da die richtigen ansprechpartner...

Sry, wenn ich jezz OT werde, aber sind Olli und Assarbad nicht ein und die selbe Person? :gruebel:
Jedenfalls dachte ich das immer...

kalmi01 14. Jul 2006 05:43

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
Moin, moin,
Zitat:

Alle gelisteten Interpreter erzeugen (meines Wissens nach, hab mir nicht alle angesehen - DWS fehlt mir noch ) keinen Maschinencode. Sie interpretieren lediglich einen Pascal-Code, der ihnen zugeworfen wird
Ich habe mir den Code von DWS zwar nicht "reingezogen", da aber eine Schleife im DWS fast genauso schnell abläuft, wie als echte Funktion in Delphi, geh ich mal davon aus.
"Fast genauso schnell" heisst, Delphi-Speed + ein kleiner Offset fürs Kompilieren.

richard_boderich 14. Jul 2006 08:44

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
ja sicher nur verknuepft keiner dieser interpreter den uebersetzten code sinn voll mit seinem
hauptprogramm oder nicht? vielleicht hab ich ja auch die frage falsch verstanden?

richard

alias5000 14. Jul 2006 08:59

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
Eine andere Idee ist einfach die hier:

Den Quellcode in ne DLL schreiben, diese mit FreePascal kompilieren und dann dynamisch linken :wink:

Gruß alias5000

kalmi01 14. Jul 2006 09:17

Re: Zur lLaufzeit Code kompilieren und zuweisen.....
 
Zitat:

ja sicher nur verknuepft keiner dieser interpreter den uebersetzten code sinn voll mit seinem
hauptprogramm oder nicht?
Also so, wie ich die Frage verstanden habe, schon.
Mit DWS lädst Du deinen Code in eine Stringlist und compilierst sie.
Danach kannst Du das Kompilat so oft aufrufen wie Du willst.
Also z.B.
Delphi-Quellcode:
onEreignis := DWS_Prog.Execute;
Entweder ruft DWS_Prog dann Routinen in der EXE auf, oder liefert halt Daten zurück.
Wenn DWS_Prog massenweise unterschiedliche Routinen in der EXE aufrufen soll, muss man sich überlegen, ob man mehr Wert auf viel Perfomance legt ==> viel Arbeit oder etwas weniger Performance, dafür aber ein übersichtlicher Programieraufwand.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz