Einzelnen Beitrag anzeigen

Benutzerbild von littleDave
littleDave

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

Re: Sysygy Script Engine - Version 0.99b

  Alt 10. Jul 2008, 17:22
Zitat von mimi:
So, wie versprochen habe ich es versucht unter Lazarus zum laufen zu bringen, was leider nicht geht,
weil die LCL anscheind kein CopyMemory kennt.

Ich habe es unter Linux versucht.
Was genau macht diese Methode ? kann man die auch noch anders Schreiben ?
weil MoveMemory wird auch nicht gefunden.
SygScript_Runtime_unit
in dieser Unit traten die Fehler auf.
Es währe außerdem noch schön, wenn du von vornerein die Windows unit nur mit Komplier schalter einbinden könntest.
die musste ich in allen Units rauß nehmen.
Ich werd mir in absehbarer Zeit mal Lazarus installieren und versuchen, das Problem zu beheben.

Zitat von mimi:
Evlt. gibt es ja noch eine andere Lösung für das Problem, ich habe ein neues Projekt angefangen, und mir ein Beispiel von dir angeschaut und folgende unit hinzugefügt:
Delphi-Quellcode:
uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
  SygScript_Constants_unit, SygScript_Parser_unit, SygScript_Runtime_unit;
  ;
brauche ich wirklich alle ?
Also anhand der Unit-Namen merk ich schon, dass du noch ein altes Package hast. In der neusten Version heißen die Unitnamen anders (würde dann so aussehen: uSygConstants, uSygParser, uSygRunTime).

Also wenn du nur kompilieren willst, brauchst du nur die uSygParser. Fürs Ausführen brauchst du nur die uSygRunTime. Wenn du dann noch die bereits konvertierten Units auch zur Verfügung stellen willst, musst du die auch noch einbinden.

Hier ist mal das einfachste Beispiel:
Delphi-Quellcode:
uses
  uSygParser, // für TSygScript_Parser
  uSygRunTime; // für TSygScript_RunTime

var Compiler : TSygScript_Parser; // das Objekt muss natürlich vorher erstellt werden
    Executor : TSygScript_RunTime; // ... und das Objekt sollte auch vorher erstellt werden

function CompileAndExecute(ScriptSource: string): boolean;
begin
  // Ergebniss vorinitalisieren
  result := False;
  // Script kompilieren
  if Compiler.ParseScript(ScriptSource) then
  begin
    // ByteCode im Executor speichern
    Executor.FillData(Compiler.OutputData);
    // Script ausführen
    Executor.Run;
    result := True;
  end;
end;
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