AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Sysygy Script Engine - Version 0.99h
Thema durchsuchen
Ansicht
Themen-Optionen

Sysygy Script Engine - Version 0.99h

Ein Thema von littleDave · begonnen am 13. Jun 2008 · letzter Beitrag vom 1. Sep 2009
Antwort Antwort
Seite 5 von 9   « Erste     345 67     Letzte »    
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#1

Re: Sysygy Script Engine - Version 0.99e

  Alt 18. Jul 2008, 00:31
Es gibt mal wieder was neues zu berichten: eine neue Version ist wiedermal online (auch wenn das hier langsam zum Tagebuch wird, sind doch ein paar Neuerungen mit drinnen )

Die Script-Engine ist jetzt auch unter FPC kompilierbar . Zu den Einschränkungen gibt es im ersten Post einen neuen Abschnitt Sysygy Script Engine + FreePascal
Außerdem ist jetzt nun möglich, Parameter als var-Parameter im Script-Funktionsaufruf aus dem Programm heraus zu benutzen. Dafür muss in dem array of const einfach der Pointer auf die Variable übergeben werden, den Rest macht die Script-Engine selber.

Den Download sowie den aktuellen ChangeLog gibts im ersten Post

Grüße
Dave
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#2

Re: Sysygy Script Engine - Version 0.99f

  Alt 24. Jul 2008, 12:30
Servus miteinander,

ich hab mal wieder eine neue Version hochgeladen - diesmal ohne viel Neuerungen - aber dafür mit vielen Bug-Fixes:

Der erste wichtige Fehler war eine fehlerhafte Behandlung von Exit-Anweisungen in verschachtelten try-finally-Blöcken. Wenn im tiefsten try-finally-Block die Funktion "exit" aufgerufen wurde, sprang das Programm nicht durch alle finally-Anweisungen sondern nur in den letzten finally-Block - das ist jetzt behoben

Dann hab ich mich weiter mit den try-Blöcken beschäftigt und bin auf einen schon sehr alten Fehler gestoßen: Wenn in einer repeat-until oder in einer while do-schleife die Anweisung "continue" aufgerufen wurde, hat sich das Script sofort beendet - ohne Fehlermeldung. Das ist jetzt behoben, die continue-Anweisung funktioniert jetzt auch in while/repeat Schleifen.

Dann ist mir noch ein sehr kritischer Fehler aufgefallen: bei verschachtelten Element-Aufrufen mit mehr als einer Ebene (also z.B. Application.MainForm.Caption) wurden Variablen im Script-Stack überschrieben. Das passierte aber nur, wenn die zuletzt aufgerufene Methode eine procedure und keine function ist.
In diesem Zusammenhang ist mir gleich noch ein kleiner Fehler in einer Anweisung im Interpretor aufgefallen, die ich natürlich ebenfalls sofort behoben habe

Da ich in Version 0.99a die Script-String-Liste, die die einzelnen Strings des Scripts beinhaltet, verbessert habe, kam ein Fehler zum Vorschein, der vorher nicht aufgetreten ist: Die Auswahl des Strings in uses-Units wurde nicht korrekt ausgeführt. Somit war die String-Ausgabe fehlerhaft. Das ist jetzt auch behoben.

So, das wars auch schon wieder - ach ja: Download und ChangeLog ist im ersten Post zu finden

Grüße
Dave
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#3

Re: Sysygy Script Engine - Version 0.99f

  Alt 31. Jul 2008, 17:02
Juhu, der 4. Post hintereinander

Es gibt mal wieder was neues zu Berichten. Es hat diesmal zwar nur indirekt mit der Script-Engine zu tun, aber doch ein wenig.

Um die Script-Engine an sich besser testen zu können, hab ich ein "kleines" Test-Projekt geschrieben, dass die Script-Engine sehr intensiv benutzt: Es ist ein HTTP-Server, bei dem die Seiteninhalte, wie z.B. mit php, dynamisch erstellt werden. Den dynamischen Part übernimmt dabei komplett die Script-Engine.
Die Seite an sich ist ein "Multi-Blogger", d.h. es ist ein Server, bei dem jeder Benutzer einen eigenen Blog erstellen können. Jeder Blog kann dabei beliebig viele Kategorien haben. Diese Kategorien werden dann nochmal in Unterkategorien unterteilt, in denen dann die einzelnen Posts hineingeschrieben werden.
Der Server speichert dabei seine Daten in eine selbst geschriebene Datenbank, die ich mal geschrieben hatte.

Ich bin mir noch nicht sicher, in welcher Form ich das Projekt freigeben will (Freeware oder OpenSource).

Der eigendliche Grund dieses Posts ist, dass der Server im Moment online ist und frei benutzt werden kann. Für alle, die nicht extra einen Account anlegen wollen (ohne Account nix los), hab ich einen Gast-Account erstellt. Benutzername und Passwort ist jeweils gast (Passwort muss klein geschrieben werden).

Falls ihr euch traut, euch zu registrieren - euer Passwort wird als MD5 in der Datenbank gespeichert. Außerdem werde ich die Datenbank sowieso irgendwann löschen. Wer mir traut (muss ja nicht euer Root-Passwort sein ), kann sich ja registrieren - für die Anderen ist der Gast-Account da. Wäre schön, wenn sich der ein oder andere mal 5 min die Zeit nimmt und sich das anschaut.
Ach ja, natürlich könnt ihr auch euren Eigenen Test-Blog erstellen, Beiträge kommentieren usw - auch mit dem Gast-Account.

Was ich gerne von euch wissen würde, ist: Besteht interesse an dem Programm? Sind Fehler vorhanden?

Hier die URL: http://littledave.globedns.info
Der Server ist heute bis ca. 23:00 Uhr online, dann das ganze Wochenende erstmal nicht, dann ab nächste Woche wieder tagsüber.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
376 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Sysygy Script Engine - Version 0.99f

  Alt 31. Jul 2008, 17:38
Hallo LittleDave,

also ich hab mir den MultiBlogger mal kurz angeschaut und finde das System und Design echt nett.

Ist wirklich ganz interessant. Wie hast Du das ganze aufgebaut (Welcher Server, Hoster etc. pp) ??

grüsse

ConstantGardener
Andreas Schachtner
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#5

Re: Sysygy Script Engine - Version 0.99f

  Alt 31. Jul 2008, 17:47
Der Server ist ein einfacher idHTTPServer. Der Request wird dann an die Script-Engine übergeben, die dann daraus den Inhalt der Seite erstellt. Wenn die Script-Engine fertig ist, ist der Inhalt der HTTP-Seite in einem String, der dann wieder vom HTTP-Server ausgelesen und danach gesendet wird.

Das Design ist nicht von mir, ist ein Freeware-Template (Link steht auf der Seite ganz unten rechts)

Der Server läuft hier lokal auf meinen Rechner. Die IP-Addresse wird über globedns.info bekanntgegeben.

Was bei diesem Projekt auch noch sehr wichtig für mich war, ist die Performance. Die Website wird meistens innerhalb von 2-5 Millisekunden erstellt, wobei die Script-Engine dabei ca. 1.000 bis 5.000 Zeilen Script-Quelltext abackert.

Hier ist mal der grobe Ablauf eines Requests:
- der idHTTP-Server parsed den Header aus HTTP und übergibt ihn an die Anwendung
- Anhand des Document-Request wird die Script-Datei ausgewählt, die die Seite erstellen soll
- Die Request-Parameter werder dann an den Script-Interpretor übergeben
- Das Script wird ausgeführt
- Das Ergebniss des Scripts wird wieder ausgelesen und an den idHTTP-Server übergeben
- der idHTTP-Server sendet dann die Daten

In einem Script kann natürlich komplett auf die eingebaute Datenbank zugegriffen werden, Such-Queries gestartet und ausgewertet werden und Einträge verändert werden.

Der Server an sich kann nur "Script auswählen - Daten übergeben und wieder auslesen - Senden". Den Rest übernimmt die Script-Engine.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#6

Re: Sysygy Script Engine - Version 0.99g

  Alt 6. Aug 2008, 19:43
Da ich im Moment die Script-Engine ausführlich in meinem "Testprojekt" Multi-Blogger ausprobiere, finde ich ab und zu auch noch ein paar Fehler - daher hab ich jetzt mal wieder eine neue Version hochgeladen. Erstmal ich die Geschwindigkeit der Routine "TSygScript_RunTime.LoadFromStream" extrem verbessert. Dies ist besonders bei langen Scripts bemerkbar (bei meinem Projekt hat ein Script ca. 20.000 Instructions, diese werden jetzt innerhalb von wenigen Millisekunden geladen - ohne die Optimierung waren es ca. 1-2 Sekunden).
Zum anderen ist mir ein Memory-Leak im Parser aufgefallen, den ich sofort behoben habe.

Da ich in mein "Testprojekt" (ein HTTP-Server, der die einzelnen Seiten mit Hilfe dieser Script-Engine erstellt) schon sehr viel Arbeit hineingesteckt habe, wollt ich es eigentlich auch noch veröffentlichen. Im Moment komm ich ganz gut vorran und es ist auch schon fast alles lauffähig. Doch ein paar Sachen fehlen noch. Falls sich jemand bereits jetzt dafür interessiert, kann er sich

hier (http://littledave.globedns.info)

schonmal alles anschauen und etwas herumspielen (der Gastaccount, den ich in Post #43 vorgestellt habe, existiert nicht mehr, da nun einiges auch ohne Account möglich ist)
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#7

Re: Sysygy Script Engine - Version 0.99h

  Alt 15. Okt 2008, 23:02
Man ist der letzte Update lange her. Aber die Entwicklung hat währenddessen nicht geschlafen, sie war nur langsamer. Jedenfalls hab ich mal wieder die aktuellste Version hochgeladen in der sich einige Veränderungen und Verbesserungen befinden.

An alle, die noch nicht so ganz wissen, wozu diese Script-Engine gut ist: ich habe bereits folgende Projekte damit realisiert:
Download ist im ersten Post zu finden
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
EugenB

Registriert seit: 7. Dez 2006
98 Beiträge
 
Lazarus
 
#8

Re: Sysygy Script Engine - Version 0.99h

  Alt 4. Jan 2009, 14:09
Moin,

irgendwie bin ich grade im Script-Wahn , zuerst hab ich Pascal Script probiert aber irgendwie sind da noch soviele Fehler, dann hab ich schon fast vergessen das es diese Script Engine noch gibt

Da ich FPC nutze, musste ich in dieser Datei: uSygConstants

diesen Teil:

Delphi-Quellcode:
procedure TSygScript_List.SetCount(value: Cardinal);
var i: integer;
begin
  for i:=Count to value-1 do
    Add(nil);
end;
auch unter das {$IFNDEF FPC} packen

dann konnte ich es schon mal Compilieren

Da es noch keine Arrays gibt haste wohl diese TIntegerList hinzugefügt oder? ist ganz hilfreich, jedoch wie kann man die Werte neu setzen? ich fand dazu keine Funktion, also hab ich diese mal eben hinzugefügt:

Delphi-Quellcode:
procedure TIntegerList_SetItem(Self: TIntegerList; index: integer; Item: Integer);
begin
  Self.Items[index] := Item;
end;
das selbe auch für TFloatList

Deine Script Engine ist eine richtige Alternative zum Pascal Script.

Was meinste wann diese Sachen funktionieren werden?
Arrays
Class Properties
Gleichnamige Funktionen ( welcher aber verschiedene Parameter haben zB. x(a: Integer); x(a: Float); x(a,b : Integer); etc

Wie füge ich Funktionen hinzu, auch wenn ich den UnitName nicht weiß?

Delphi-Quellcode:
procedure TForm1.ParserOnAddCustomFunctions(Sender: TObject; UnitName: string);
begin
   if(UnitName='myprogram')then
   begin
      TSygScript_Parser(Sender).AddFunction(@MyWriteLn, 'procedure WriteLn(s: string); register;');
   end;
end;
Wenn ich das ohne UnitName='my...' mache bekomme ich nen Fehler das WriteLn schon existiert, gibt es vllt ne Funktion zum zu gucken ob diese Funktion schon existiert? oder wie löst man es am besten.

Ich finde diese Engine besser als das Pascal Script, auch wenn die obigen Wünsche noch(?^^) nicht implementiert sind, zB Array ist bei Pascal Script vorhanden, jedoch gibts damit noch probleme, Class Properties funktionieren jedoch nur bei Variablen also vom Programm her hinzugefügte, jedoch kann man in Pascal Script keine Klassen im Script erstellen, wieder ein Pluspunkt , Gleichnamige Funktionen gibt es auch unter PS nicht, und Funktionen mit zB. Parameter mit gleichen Typen werden richtig aufgerufen

Ich würde vorschlagen das du die Scipt Engine auf einen SVN Server packst, dann könnte man immer nen aktuellen Code bekommen und man könnte leichter Patches erstellen

Weiter so
  Mit Zitat antworten Zitat
mschnell

Registriert seit: 13. Sep 2006
27 Beiträge
 
#9

Re: Sysygy Script Engine - Version 0.99h

  Alt 5. Jan 2009, 13:49
Hi Dave,

Hast Du Deinen Bytecode komplett neu erfunden, oder hast Du eine Vorlage benutzt ?

Gibt es eine Beschreibung für den Bytecode ?

(Ich möchte u.U,. den Bytecode-Interpreter in C implementieren, um auf einem Prozessor, für den es keinen Object-Pascal-Compiler gibt, Delphi-Code laufen zu lassen. )

Gruß und Dank,

-Michael
  Mit Zitat antworten Zitat
EugenB

Registriert seit: 7. Dez 2006
98 Beiträge
 
Lazarus
 
#10

Re: Sysygy Script Engine - Version 0.99h

  Alt 5. Jan 2009, 22:23
Ich bins mal wieder xD

Wie kann ich dem Script eine vorhandene Variable / Klasse zuweisen? zb. Self:TForm ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 9   « Erste     345 67     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz