![]() |
ScriptEngine II (v. 0.6.1)
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo liebe DP'ler
ScriptEngineII ist der Nachfolger meiner ![]() Kurzübersicht
Installation In der ZIP-Datei befindet sich ein Unterordner "src". Diesen extrahiert ihr einfach in einen Ordner eurer Wahl und fügt diesen Ordner dann in den Bibliothekspfad von Delphi hinzu. Im Quelltextorder befindet sich die Datei "ScriptEngine.inc". Diese Datei kann zum konfigurieren der ScriptEngine benutzt werden. Die einzelnen Defines sind (hoffentlich) ausreichend erklärt. Benötigte Delphi-Version Bisher hab ich es nur mit Delphi 7 und mit Lazarus getestet. Unter FreePascal hab ich nur ein paar Tests ausgeführt und diese sind auch korrekt gelaufen. Unter Delphi 2009/2010 hab ich die ScriptEngine ebenfalls erfolgreich getestet. Besonderheiten
Bisherige Probleme Im Moment sind noch folgende Probleme vorhanden:
Lizenz MPL v1.1 , GPL v3.0 oder LGPL v3.0 Feature-Liste
Noch ein paar kurze Hinweise - Diesmal habe ich leider nicht so viele Beispiele mit in den Download hinein gepackt - es werden aber noch ein paar nachgeliefert SVN Ich hab für die Script-Engine ein ![]() Mitgelieferte IDE Ich habe die kompilierte Version meiner aktuellen IDE mit in das Download-Paket gepackt. Zusätzlich hab ich den Source in den Unterordner IDEsrc gepackt - zusammen mit den drei kompilierten Packages. Mit der IDE kann man ein paar Testprojekte öffnen, die sich im Unterordner "Projects" befinden. Ich hoffe, euch gefällt die neue Script-Engine und vielleicht kann der eine oder andere sie ja benutzen. Download Auf ![]() Grüße |
Re: ScriptEngineII (v. 0.3.2.4)
Hallo.
Erstmal ein dickes Lob für diese tolle Bibliothek, ich lese mir gerade deine vorbildhaft gestaltete Anleitung durch und spiele vielleicht mal noch ein wenig damit herum. Was mir jedoch seltsam erscheint ist, dass du das Ganze unter eine CreativeCommons-Lizenz veröffentlicht hast - eigentlich sind diese ja gerade nicht für Software sondern Kunst (Texte, Musik, Bilder, Videos) geeignet. Auch das "Keine Bearbeitung: der Quelltext darf nur unverändert weitergegeben werden" finde ich seltsam - wenn ich das Ganze nun in ein Opensource-Spiel integriere und dabei einige Dinge verbessere, warum darf ich dann diese Verbesserungen nicht der Öffentlichkeit (also auch dir) zurückgeben? Wenn ich die Script-Engine jedoch in ein Closed-Source-Spiel einbinde, dann kann ich umschreiben, was ich möchte und darf das dann veröffentlichen. Das ganze widersetzt sich a) dem Sinn von OpenSource und b) glaube ich dem, was du erreichen möchtest. Zum Beispiel werde ich nicht in der Lage sein, deine Script-Engine in Andorra 2D zu integrieren und muss mir dann leider wohl eine andere Lösung suchen. Warum veröffentlichst du es nicht unter einer Lizenz wie der GPL/LGPL und verkaufst kommerzielle Lizenzen? Sonst wiederhole ich nochmal: Klasse Arbeit, weiter so! :thumb: Andreas |
Re: ScriptEngineII (v. 0.3.2.4)
Zitat:
Zitat:
Aber mit fällt gerade was ein: das Framework wird grundsätzlich erstmal unter LGPL oder GPL freigegeben. Mit kurzer Absprache kann man auch eine andere Lizenz haben - was bei kommerziellen Einsatz einen gewissen Obolus kostet. Ich werd mir das noch überlegen (vielleicht noch ein/zwei Kommentare abwarten) - aber vielleicht heute Abend schon die Lizenz ändern. Zitat:
|
Re: ScriptEngineII (v. 0.3.2.4)
Wegen der Lizenz, da hatte ich vor 'ner Weile auch mit zu kämpfen und am Ende ist das hier rausgekommen
MPL v1.1 , GPL v3.0 or LGPL v3.0 Kannst dir ja gern nochmal die Beiträge durchlesen ![]() Ansonsten gibt es noch massenhaft Themen dazu [dp]Lizenz*[/dp] (oder einfach z.B. Begriffen=Lizenz und Autor=himitsu, da ich in einigen anderen Themen auch schon drin rumgepostet hab) und in meinem himXML-Thread versteckt sich auch eine kleine Diskusion dazu (so zwischendurch ab Seite 4 oder so) Mann oh mann, soviele ScriptEngines hier in der DP, da weiß man bald garnicht mehr, welche man nehmen soll :mrgreen: |
Re: ScriptEngineII (v. 0.3.2.4)
Hi,
habe die Demos mal unter D2009 compiliert:
Delphi-Quellcode:
in
Chr(d)
Delphi-Quellcode:
geändert werden musste.
AnsiChar(d)
Gruss Michael |
Re: ScriptEngineII (v. 0.3.2.4)
Zitat:
Delphi 2009/2010 wird offiziell nicht unterstützt, da ich keine Möglichkeit habe, es zu testen. Werde die Zeile aber natürlich ersetzen. Grüße |
Re: ScriptEngineII (v. 0.3.2.4)
Zitat:
Zitat:
|
Re: ScriptEngine II (v. 0.3.2.4)
Zitat:
Nochmal eben zum Lizenz-Problemchen Ich habe nochmal genauer drüber nachgedacht, wie ich das mit der Lizenz jetzt mache. Ich finde den Vorschlag von himitsu mit den Mehrfachlizenzen wirklich gut und ich habe ihn auch im Endeffekt genau so umgesetzt: MPL, LGPL oder GPL. Das mit dem Verkaufen von kommerziellen Lizenzen hab ich mir dabei auch durch den Kopf gehen lassen und fand die Idee für mich nicht mehr so wirklich gut. Wenn jemand das Framework wirklich gut findet, dann bin ich eigentlich auch schon mit einem Kommentar, Verbesserungsvorschlägen oder einer Spende (z.B. ![]() Ich hab den Anfangspost sowie alle Positionen mit den Lizenzen (die mir gerade eingefallen sind) im Download angepasst. Grüße |
Re: ScriptEngine II (v. 0.3.2.4)
Hi, ich wollte deine Engine mal wie in der .pdf Datei beschrieben ausprobieren.
vor punkt 2.4 scheitere ich, ich zitiere: Zitat:
Delphi-Quellcode:
Bei Programmstart eine Fehlermeldung:
unit testunit;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uSE2Compiler, // für den Compiler uSE2UnitCacheMngr, // für den Unit-Cache-Manager uSE2Errors, // für TSE2ErrorType uSE2Reader, // wird zum Lesen der Daten benutzt uSE2PEData, // die ByteCode-Daten uSE2RunTime; // für die RunTime type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } procedure CompilerError(Sender: TObject; ErrorType: TSE2ErrorType; ErrorUnit, ErrorText: string; ErrorPos, ErrorLine: integer; UserData: TObject); procedure CompilerNeedUnit(Sender: TObject; const Name: string; const Readers: TList); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var Compiler : TSE2Compiler; RunTime : TSE2RunTime; PEData : TSE2PE; begin Compiler := TSE2Compiler.Create;// den Compiler erstellen try // hier wird der Quelltext des Scripts compiliert Compiler.OnGetFile := CompilerNeedUnit; Compiler.OnCompilerError := CompilerError; PEData := Compiler.Compile( 'program MyScript;' +#13#10+ 'uses MyUnit;' +#13#10+ 'var i: integer;' +#13#10+ 'begin'+#13#10+ ' i := Add(2, 4);' +#13#10+ ' Console.WriteLine(i);' +#13#10+ 'end.'+#13#10); // falls das compilieren erfolgreich war, ist PEData ungleich nil if PEData <> nil then begin try // hier wird die RunTime erstellt, die das kompilierte // Script ausführt RunTime := TSE2RunTime.Create; try // zuerst muss das kompilierte Script übergeben werden RunTime.AppCode := PEData; // nun muss die RunTime initialisiert werden RunTime.Initialize; // hier wird das Script ausgeführt RunTime.Run; // nun noch die RunTime stoppen RunTime.Finalize; // wenn wir folgende Zeile nicht einfügen // RunTime.AppCode := nil // wird das Objekt PEData automatisch von der RunTime // freigegeben. // Da wir das aber selbst machen, fügen wir die Zeile ein RunTime.AppCode := nil; finally // die RunTime freigeben RunTime.Free; end; finally // das kompilierte Skript freigeben PEData.Free; end; end; finally // den Compiler freigeben Compiler.Free; end; end; procedure TForm1.CompilerError(Sender: TObject; ErrorType: TSE2ErrorType; ErrorUnit, ErrorText: string; ErrorPos, ErrorLine: integer; UserData: TObject); begin // nur Fehler anzeigen if ErrorType = petError then // Fehlernachricht anzeigen ShowMessage('Compiler error: '+#13#10+ Format('[%s] [Zeile %d]: %s', [ErrorUnit, ErrorLine, ErrorText] ) ); end; procedure TForm1.CompilerNeedUnit(Sender: TObject; const Name: string; const Readers: TList); begin // falls der Compiler die Unit "MyUnit" haben will if SameText(Name, 'MyUnit') then begin // dann wird er Quelltext der Unit hinzugefügt // dazu muss in der Liste "Readers" ein Objekt vom // Typ "TSE2Reader" hinzufügen. Jedoch ist "TSE2Reader" // eine abstrakte Klasse. Vom Reader sind zwei Versionen // bei der Script-Engine mit dabei: // - ein StringReader, mit dem man direkt den Quelltext als // string übergeben kann // - ein StreamReader, mit dem man den Stream mit dem Quelltext // auslesen kann // da hier direkt ein String benutzt wird, wird der TStringReader // benutzt Readers.Add( TSE2StringReader.Create( // nun übergibt man im Constructor direkt den Quelltext // der Unit "MyUnit" 'unit MyUnit;'+#13#10+ 'interface'+#13#10+ ' function Add(const i1, i2: integer): integer;'+#13#10+ 'implementation'+#13#10+ ' function Add(const i1, i2: integer): integer;'+#13#10+ ' begin result := i1 + i2;end;'+#13#10+ 'end.' ) ); end; end; end. Erste Gelegenheit für Exception bei $7572FBAE. Exception-Klasse EInvalidPointer mit Meldung 'Ungültige Zeigeroperation'. Prozess TestProject.exe (1676) So sagt mir das zumidest der Debugger ;) Ich hoffe du kannst mir helfen. mfG |
Re: ScriptEngine II (v. 0.3.2.4)
Zitat:
Delphi-Quellcode:
müsste aber so aussehen:
// Da wir das aber selbst machen, fügen wir die Zeile ein RunTime.AppCode := nil;
finally
Delphi-Quellcode:
// Da wir das aber selbst machen, fügen wir die Zeile ein
RunTime.AppCode := nil; // <--- finally |
Re: ScriptEngine II (v. 0.3.2.4)
Danke, mein Problem ist, dass ich bei solchen Projekten, gerne mal den Code kopiere, dann in mein Projekt einfüge und dort durchlese, anstatt es abzuschreiben.
Allerdings werden bei meinem Adobe Reader 8 die Leerzeilen und -zeichen beim Code-Abschnitt ignoriert :roll: Danke nochmal mfG VdG |
Re: ScriptEngine II (v. 0.3.2.4)
Die Script-Engine funktioniert unter Linux mit Lazarus einwandfrei.
Ich musste nur kleinere Änderungen bei den Includes machen (statt \ den hier / :wink: ). Außerdem funktioniert der Performance-Counter nicht. Da er Windows-Api funktionen nützt. Aber sonst läuft alles Tadellos! :thumb: mfg _X_ |
Re: ScriptEngine II (v. 0.3.2.4)
Da hast du dir ja was echt Tolles aus den Fingern (oder sollte man besser sagen Tasten) gszogen. :)
Noch ne Frage zur Lizenz: Bleibt das jetzt so, dass ich für ein Freeware-Projekt die Script-Engine gratis verwenden und bei Bedarf auch ändern darf? Schöne Grüße, Florian |
Re: ScriptEngine II (v. 0.3.2.4)
Zitat:
Zitat:
Zitat:
Zitat:
Ich habe in den letzten Tagen mich mal hingesetzt und ein paar Helper-Klassen für einige Datentypen geschrieben. Wer Helper-Klassen nicht kennt: damit kann ich Klassen/Typen mit Funktionen erweitern, ohne die Vererbung zu nutzen. Als Beispiel möchte ich noch schnell ein Beispiel-Script zeigen, bei dem ich die Erweiterungen für den Typ String getestet habe:
Delphi-Quellcode:
Ich weiß noch nicht, ob ich das Update dieses Wochenende noch hin bekomme, da ich noch die Helper-Klassen und die partiellen Klassen in das PDF noch mit hineinschreiben will.
program Project1;
var s: string; p: string; begin s := 'Hallo, wie gehts'; if s.StartsWith('Hallo') then if s.EndsWith('gehts') then if s.Length > 10 then begin p := s.Copy(6, 5); s := s.Replace(p, '', [rfReplaceAll, rfIgnoreCase]); end; Console.WriteLine(s); // Ausgabe: "Hallo gehts" Console.WriteLine(p); // Ausgabe: " , wie" Console.ReadKey; end. |
Re: ScriptEngine II (v. 0.3.2.4)
Zitat:
Zitat:
mfg _X_ |
Re: ScriptEngine II (v. 0.3.2.4)
Unter Delphi 6 lässt es sich nicht kompilieren. Einige Funktionen sind in der SysUtils.pas noch nicht vorhanden.
|
Re: ScriptEngine II (v. 0.3.2.4)
Zitat:
|
Re: ScriptEngine II (v. 0.3.2.4)
In der PDF gibt es die Variable "MyScriptProject", von welchem Type ist die?
mfg _X_ |
Re: ScriptEngine II (v. 0.3.2.4)
Zitat:
-> Man muss den Typ leider selbst erstellen. |
Re: ScriptEngine II (v. 0.3.2.4)
Ach so.
Unter Linux gibt es auch ein paar Probleme mit dem Cache-Manager. Wo genau das Problem liegt, kann ich aber noch nicht sagen. mfg _X_ |
Re: ScriptEngine II (v. 0.3.2.4)
Ich habe gerade ein Problem gefunden, bei dem auch der Cache-Manager betroffen ist - vielleicht liegt es daran:
In der Datei "uSE2Consts.pas" findet man folgende Zeile:
Delphi-Quellcode:
Diese muss man durch folgende Zeilen ersetzen
class procedure TSE2StreamHelper.WriteString(Stream: TStream;
const s: string); var len: cardinal; begin len := length(s); Stream.Write(len, SizeOf(len) * SizeOf(char)); // <-- hier ist ein fehler Stream.Write(s[1], len); end;
Delphi-Quellcode:
class procedure TSE2StreamHelper.WriteString(Stream: TStream;
const s: string); var len: cardinal; begin len := length(s); Stream.Write(len, SizeOf(len)); Stream.Write(s[1], len * SizeOf(char)); // <-- muss nur eine Zeile weiter drunter end; |
Re: ScriptEngine II (v. 0.3.3.0)
Ich hab gerade eine neue Version hochgeladen :arrow: Version 0.3.3.0
Zum einen hab ich den Bug, den ich gerade beschrieben habe beseitigt. Zudem hab ich noch ein Problem behoben, der mit aktivierten Range-Check aufgetreten ist (Danke an _X_ für den Hinweis). Es gibt auch eine neue Unit: "uSE2IncHelpers.pas". Bindet man diese Unit ein, sind ein paar Helper-Klassen für die Typen TDateTime, String, Pointer, Single, Double und TColor eingebaut. Die Helper-Funktionen sind auch in der eingebauten IntelliSense-Funktion verfügbar. Hier mal zwei, drei Beispiele, die mit den Helper-Klassen möglich sind:
Delphi-Quellcode:
Um die Helper-Klassen zu benutzen muss man nur die Unit "uSE2IncHelpers" in die Uses-Liste der Anwendung aufnehmen.
var time: TDateTime;
str : string; ptr : pointer; dbl : double; res : boolean; begin res := dbl.IsNan; res := ptr.Assigned; res := (str.IndexOf('h') > 10) and (str.EndsWith('hey')); res := (time.Month > 2) and (time.DayOfYear > 128); end. Leider hab ich es noch nicht geschafft, die Helper-Klassen sowie die partiellen Klassen in das PDF mit aufzunehmen - ich werd es aber noch nachholen. Grüße |
Re: ScriptEngine II (v. 0.3.2.4)
Zitat:
Zitat:
|
Re: ScriptEngine II (v. 0.3.3.0)
Unter Linux bekommt man in der Unit uSE2PerfMonitor kleine Probs mit Uses Windows; Bitte ein {$IFNDEF FPC} reinmachen.
mfg _X_ |
Re: ScriptEngine II (v. 0.3.3.0)
Ich freu mich das es endlich das die Version der ScriptEngine gibt :stupid:
Aber leider schade das man keine Antwort per PN bekommt :( Anyway, weiter so , endlich mal ne OOP Scriptsprache =) |
Re: ScriptEngine II (v. 0.3.2.4)
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: ScriptEngine II (v. 0.3.2.4)
Zitat:
Delphi-Quellcode:
bzw.
{$IF not Declared(PosEx)}
function PosEx(...): string; begin ... end; {$IFEND}
Delphi-Quellcode:
[add]
interface
{$IF not Declared(PosEx)} function PosEx(...): string; {$DEFINE INCLUDE_POSEX} {$IFEND} implementation {$IFDEF INCLUDE_POSEX} function PosEx(...): string; begin ... end; {$ENDIF} OK, man könnte es auch von der Delphi-Verion abhängig machen, aber so ist es wohl einfacher ... also wenn man nicht ständig gucken muß, wann was eingeführt wurde usw. |
Re: ScriptEngine II (v. 0.3.2.4)
Zitat:
Delphi-Quellcode:
Das Define "DELPHI7UP" wird per Include-File gesetzt, dass in jede Unit der Script-Engine eingebunden wird.
{$IFNDEF DELPHI7UP}
function PosEx(....) begin (...) end; {$ENDIF} // Aufruf: {$IFDEF DELPHI7UP} result := StrUtils.PosEx(....); {$ELSE} result := PosEx(...); {$ENDIF} Zitat:
Zitat:
|
Re: ScriptEngine II (v. 0.3.3.0)
Liste der Anhänge anzeigen (Anzahl: 1)
Es läuft soweit unter Delphi 2010, es gibt jedoch einige Warnungen.
|
Re: ScriptEngine II (v. 0.3.3.0)
Zitat:
aber die "Funktionen" Declared (für Funktionen, Klassen, Konstanten und Variablen) und Defined für Compilerschalter geht. Ich weiß jetzt nur nicht in welcher Delphiversion das {$IF ...} eingeführt wurde.
Delphi-Quellcode:
[add]
{$DEFINE Schalter1}
// dieses {$IFDEF Schalter1} {$IFDEF Schalter2} ... {$ENDIF} {$ENDIF} // ist das Gleiche wie das {$IF Defined(Schalter1) and Defined(Schalter2)} ... {$IFEND} // und dann gibt es noch sowas {$IF not Declared(xyz)} {$MESSAGE Hint 'xyz gibt es nicht'} {$IFEND} const xyz = 5; {$IF Declared(xyz)} {$MESSAGE Hint 'jetzt schon'} {$IFEND} {$IF xyz = 5} {$MESSAGE Hint 'xyz ist 5'} {$IFEND} die D2010-Warungen sollten so wohl auch schon in/ab D2009 kommen |
Re: ScriptEngine II (v. 0.3.3.0)
Hat deine Scriptsprache bzw. deine Scripengine schon einen Namen? Deine erste Engine hieß ja SY.... .
Arbeitest du schon in einem deiner Projekte mit der neuen Scriptsprache (Widget-Engine oder ähnliches)? mfg Florian |
Re: ScriptEngine II (v. 0.3.4.0)
Zitat:
@himitsu Das $IF scheint ja sehr mächtig zu sein :shock:. Mal schauen, ob ich das benutzen kann ;-) Danke für die Infos Zitat:
Zitat:
![]() Die Widget-Engine befindet sich gerade noch im Winterschlaf ;-). Jedoch will ich die neue Script-Sprache auch in die Widget-Engine einbauen. Zuvor muss ich mir aber erst ein Interface für die Widget-Engine überlegen und vielleicht die ein oder andere Veränderung machen. @All: Es gibt eine neue Version der Script-Engine :arrow: Version: 0.3.4.0 Ich habe gerade eine neue Version der Script-Engine hochgeladen. Diesmal hab ich einiges verbessert:
Grüße Edit - falsche Version Ich hab leider die falsche Version hochgeladen :oops: Alle, die sich das Paket vor dem 30.09.2009 23:30 Uhr heruntergeladen haben, haben leider eine alte Version. Ich hab gerade die richtige hochgeladen - Sorry. In der alten Version gab es noch ein Problem mit partiellen Klassen. |
Re: ScriptEngine II (v. 0.3.4.1)
So, es gibt (schon wieder ;-)) ein kleines Update :arrow: Version 0.3.4.1
Dies ist nur eine Bugfix-Version und bringt keine neuen Features. Folgendes hab ich verbessert:
|
Re: ScriptEngine II (v. 0.3.5.0)
Es gibt mal wieder ein Update :arrow: Version 0.3.5.0
Folgendes hat sich verändert:
SVN Auf Drängen von EugenB hab ich ein ![]() Nativer Script-Methoden-Aufruf Wie bereits gesagt kann man jetzt die Script-Methoden auch "nativ" aufrufen. Um das mal etwas zu verdeutlichen hier mal ein Beispiel: Sagen wir mal, ich will folgende Script-Methode dem FormResize-Event zuweisen:
Delphi-Quellcode:
Bisher musste man immer eine Wrapper-Funktion bauen, die folgendermaßen aussehen konnte:
var
formWidth, formHeight : integer; procedure MyFormResize(Sender: TObject); begin formWidth := TForm(Sender).Width; formHeight := TForm(Sender).Height; end;
Delphi-Quellcode:
Dann wurde bei jedem Event erst die Funktion "MyCustomHandler" ausgeführt, in der dann die Script-Funktion ausgeführt wurde.
// ....
Self.OnResize := MyCustomHandler; // ... procedure TForm1.MyCustomHandler(Sender: TObject); var Method : Pointer; begin Method := Self.FRunTime.CodeAccess.FindMethod('MyFormResize', '', [pmIn], [btObject]); if Method <> nil then Self.FRunTime.Call(Method, [Sender]); end; Nun kann man wie folgt machen
Delphi-Quellcode:
Jetzt wird bei jedem OnResize-Event automatisch die Script-Funktion ausgeführt.
// ....
Self.OnResize := MyCustomHandler; // ... procedure TForm1.SetEventHandler; var Method : Pointer; MyEvent: TNotifyEvent; begin Method := Self.FRunTime.CodeAccess.FindMethod('MyFormResize', '', [pmIn], [btObject]); if Method <> nil then begin MyEvent := TNotifyEvent( Self.FRunTime.ScriptAsMethod(Method, nil) ); Self.OnResize := MyEvent; // <----- end; end; Man kann die Events zwar noch (!!!) nicht in der Script-Engine selber setzten, da man noch keine Methoden als Typ deklariert kann. Aber sobald man das machen kann, kann man die Events dann auch in der Script-Engine selber setzen. Natürlich kann man nicht nur normale Funktionen "nativ" ausführen. Man kann auch Klassen-Methoden so aufrufen - aber ich hab das alles im PDF beschrieben. Grüße |
Re: ScriptEngine II (v. 0.3.5.0)
Eine Frage: Ist die IDE auch unter Linux lauffähig?
mfg _X_ |
Re: ScriptEngine II (v. 0.3.5.0)
Zitat:
An sich ist es ja nur ein Beispiel. Der Quelltext ist zwar immer noch nicht verfügbar :oops: kommt aber noch |
Re: ScriptEngine II (v. 0.3.5.0)
Unter Wine geht die IDE.
Wenn du die JVCL verwendest, (tust du doch, glaub ich, oder? ), kannst du Linux leider abschreiben. mgh _X_ |
Re: ScriptEngine II (v. 0.3.5.0)
Hey^^,
danke für den SVN ^^ Habe mal die Demos nach Lazarus konvertiert damit man auch mal so kurz testen kann ^^, und dabei herrausgefunden, das Convert.IntToStr nicht funktioniert SEII-Code:
Delphi-Quellcode:
Gibt nur eine leere Zeile aus :(
Console.WriteLine(Convert.IntToStr(32));
Weißt du vllt woran es liegt? Lazarus 0.9.29 (letzter Snapshot) FPC 2.2.4 Bisher noch keine anderen Bugs gefunden ^^ MfG, Eugen |
Re: ScriptEngine II (v. 0.3.5.0)
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: ScriptEngine II (v. 0.4.0.0)
Eine neues Update ist da :arrow: Version 0.4.0.0
Änderungen
Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 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-2025 by Thomas Breitkreuz