Re: Sysygy Script Engine - Version 0.99b
Trotz der fortgeschrittenen Stunde hab ich mich noch entschlossen, die aktuelle Version der Script-Engine hochzuladen. Diesmal hat sich einiges geändert und einige nützlichen Sachen sind mal wieder dazugekommen :zwinker:.
Da die Unit-Namen und manche Funktionsnamen etwas unglücklich gewählt wurden, hab ich mich dazu entschlossen, diese umzubenennen. Die Unitnamen fangen jetzt einheitlich mit einem u für Unit an und danach folgt ein Syg. Danach folgen dann noch kurze und präzise(re) Namen, die den Inhalt der Unit wiederspiegeln. Die Script-Includes haben nach dem Syg noch ein Inc darstehen. Somit erkennt man sofort, was wo drinnen ist. Ein weiteres neues Feature ist die Möglichkeit, Script-Funktionen direkt aus dem Programm heraus aufzurufen. Dabei ist es kein Problem, ob die Script-Funktion auf globale Variablen zugreift oder nicht. Was allerdings noch nicht funktioniert sind var-Parameter für den Funktionsaufruf aus dem Programm heraus. Das Script bzw. die Funktion läuft zwar wunderbar, aber die Werte in den Varparameter werden nicht wieder an das Hauptprogramm zurückgegeben. Ich weiß noch nicht, wie ich das am besten Anstellen soll - nicht von der Script-Engine her, das funktioniert schon, sondern eher wie ich den Aufruf aus dem eigentlichen Programm heraus handhaben soll. Im Moment werden die Parameter für jede Funktion einfach als array of const übergeben und dann endsprechend ausgewertet. Was dafür aber funktioniert ist, dass die Rückgabewerte der Scriptfunktion auch ans Hauptprogramm weitergegeben werden. Die Aufruffunktion des Interpretors gibt dabei den Typ Variant zurück, der dann das result der Funktion enthällt. Da Variants ja keine Pointer haben dürfen, werden Pointer als cardinal-Wert im Variant gespeichert. Da ich mich mal drann gewagt habe, den Inhalt der Delphi-Unit StdCtrls auch für die Script-Sprache zur Verfügung zu stellen, ist mir aufgefallen, dass die Zeit fürs kompilieren sehr zunimmt (wenn man StdCtrls in die uses-Deklaration einbindet, kann man mit einer Kompilierzeit von ca. 1 Sekunde rechnen). Zwar hat diese Zeit keinen Einfluss auf die spätere Ausführungsgeschwindigkeit, doch etwas nervig ist das ja schon. Ich schau mal, ob ich da nich noch etwas mehr Speed rausholen kann. Den kompletten Download und den kompletten ChangeLog gibts (wie immer :zwinker:) im ersten Beitrag. Grüße Dave |
Re: Sysygy Script Engine - Version 0.99b
Moin (gähn), ich finde Deine Energie und Deine Leistung bewundernswert.
Kennst Du FastScript? Dort könntest Du dir weitere Anregungen holen. Die haben viele Sachen (interne Klassen etc.) ähnlich gelöst wie Du (man kann dort keine wirklichen Klassen implementieren, sondern nur Wrapper bauen). Der Funktionsaufruf mit Parametern geht sehr einfach:
Delphi-Quellcode:
Das VarArrayOf könnte man -von mir aus- auch noch weglassen.
Script.Call('MyFunction',VarArrayOf([Param0, Param1, Param2]));
So eine Skriptsprache ist eigentlich zu 99% dazu gedacht, ein Customizing zu vereinfachen. Klassen sind dort fehl am Platze (als softwaretechnische Herausforderung solltest Du das natürlich implementieren). Dann finde ich, das eine Skriptsprache nicht unbedingt typstreng sein muss, so wie es Delphi ist. in einer Skriptsprache muss ich auch nicht unbedingt Variablen deklarieren. Die Skriptengine soll dem Anwender ja die Arbeit so leicht wie möglich machen, und da sind Deklarationen nur lästig :zwinker: . PAXscript ist so ein Kandidat. Ich will Dir nur Denkanstöße geben und nicht etwa sagen "Öööh, gibts doch alles schon". Tolle Arbeit! :thumb: |
Re: Sysygy Script Engine - Version 0.99b
Zitat:
kennst Du Alzheimer (gähn)? Da verbuchstabelt man schon mal was oder vergisst einiges, oder? Lässt sich ALLES sowieso mit Java erledigen? Hab' gerade eben die Scriptsprachenkritik von "alzaimar" vergessen, Dank Alzheimer? Null Ahnung warum ich hier gerade was eintippe! |
Re: Sysygy Script Engine - Version 0.99b
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
function CustomStrToInt(value: string): integer;
begin // der zweite String-Parameter ('') ist nur die Unit, in der die Funktion deklariert // ist. Er kann aber auch weggelassen werden result := FRunTime.Call('MyStrToInt', '', [value]); end; Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Sysygy Script Engine - Version 0.99b
Zitat:
|
Re: Sysygy Script Engine - Version 0.99b
Zitat:
|
Re: Sysygy Script Engine - Version 0.99b
Zitat:
Sag mal bescheid wenn du sie Fertig hast *G*.... |
Re: Sysygy Script Engine - Version 0.99b
Zitat:
Zitat:
Was mich auch gerade wundert: die Zip-Datei wurde bisher schon 39x runtergeladen aber (bis auf das ausversehen eingebaute rtlvclOptimize) sind noch keine Erfahrungs/Fehlerberichte gekommen. Klar - nicht jeder braucht ständig eine Script-Engine in seinem Programm, doch ich würde die Komponente gerne weiter verbessern und es ist ja - wie ich vorher bereits mal gesagt habe - unmöglich für mich, alles zu testen. Also wenn jemand einen Fehler gefunden hat oder irgendwas nicht so funktioniert, wie man es erwarten würde, dann wäre ich extrem froh darüber, wenn ihr mir das Problem zukommen lassen würdet. |
Re: Sysygy Script Engine - Version 0.99b
Ich habe mir sie zwar runter geladen, aber bisher nur die Beispiele angeschaut die Dabei sind.
Ich habe aber vor sie zu testen, bisher habe ich in keines meiner Projekte eine Scrip Sprache eingebaut. Aber ich könnte mir bei einigen Projekten vorstellen das es sin machen würde. Z.B. bei meiner Editor Komponente. Als eine art PlungIn Schnittstelle. Aber wie genau ich das mache weiß ich noch nicht. Naja, ich meinte mit "Fertig" natürlich nicht alles was Delphi kann, sondern evlt. "nur" alles was in "Object Pascal" drin ist, ich glaube das ist ein kleiner unterschied oder ? Wenn die Syntax vorhanden ist, reicht das erstmal... für mich, schön währe halt so einige Standard Units.. wie halt Classes wegen der TStringList oder aber auch constr wegen TObjectList.... aber ob ich sowas in einem Script brauche weiß ich noch nicht. Aber ein Test würde ja nicht schaden, dann währe auch geklärt ob die Script Sprache auch unter Lazarus läuft, oder nicht. Wenn ja währe es nicht schlecht. |
Re: Sysygy Script Engine - Version 0.99b
Zitat:
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 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