![]() |
Re: ScriptEngine II (v. 0.5.1.0)
[OT]
Wow, sieht ziemlich geil aus, wenn ich das mal so sagen darf! Vor allem die Beleuchtungs- und Schatteneffekte finde ich sehr gelungen. [/OT] |
Re: ScriptEngine II (v. 0.5.2.0)
Es ist vollbracht :arrow: Version 0.5.2.0
Wie vor kurzem Angekündigt kommt hier nun ein großes Update. Die neue Multi-Threading-Funktion hat intern einige extreme Einschnitte mit sich gebracht und ich hoffe, dass alles funktioniert. Die Thread-Geschichte habe ich mehrere Tage lang geprüft sie und sollte funktionieren. Ob wirklich alles perfekt synchronisiert ist, kann ich nur hoffen - ich habe mir jedenfalls sehr viel Mühe gegeben. Die grundlegenden Threading-Funktionen habe ich erfolgreich unter Delphi 7, Delphi 2010 und Lazarus getestet.
Noch ein paar kurze Worte:
Der Download befindet sich wie immer im ![]() Grüße |
Re: ScriptEngine II (v. 0.5.2.0)
Hallo littleDave,
jetzt legst du ja ein ordentliches Tempo vor. Die Geschichte mit Multithreading ist echt klasse! Kann man sicher mal gebrauchen. Weiterhin viel Gelingen und gutes Voranschreiten mit deinem Game. Dolvik |
AW: ScriptEngine II (v. 0.5.2.0)
Hallo
an alle die Software und /oder Komonenten als Open Source für Delphi anbieten: Die MPL ist schon in Ordnung. GPL und LGPL sind für Delphi nicht ohne weiteres anwendbar! Bitte mal beim ZEOS Projekt schauen. Dort wird für die letzte Version eine abgewandelte LGPL eingesetzt, damit die Library in kommerziellen Projekten einsetzbar ist. Hintergrund ist, dass man bei einer Single-Exe immer Code einbauen muss (auch wenn DLLs benutzt werden). Diesen müsste man aber abändern können. Notfalls muss dann der Autor der Software einen Linker oder eben die IDE zur Verfügung stellen. Und Delphi jedem Kunden schenken lohnt sich vielleicht nicht. Daher wenn LGPL, dann macht bitte eine eine abgeänderte Version daraus. Und GPL macht eigentlich nur Sinn, wenn es um die eigene Verwendung, aber nicht um eine mögliche Weitergabe geht. Bei Lazarus/Freepascal sieht das natürlich anders aus. Trotzdem natürlich Dank an alle, die sich engagieren. |
AW: ScriptEngine II (v. 0.5.3.0)
Neue Version :arrow: Version 0.5.3.0
Nach einer längeren Update-Pause habe ich mal wieder die aktuellste Version veröffentlicht. Da die DP mein Zip irgendwie nicht haben wollte, habe ich im ersten Post jetzt den Download-Link von SourceForge.net angegeben. Diesmal ist der ChangeLog wieder etwas länger:
Ich habe das ganze leider noch nicht mit FreePascal und mit Delphi 2010 testen können - ich hoffe, dass alles trotzdem funktioniert. Grüße |
AW: ScriptEngine II (v. 0.5.2.0)
Oja :D
Mein aktuelles Projekt freut sich das zu hören (und ich natürlich auch). Wirklich tolle Arbeit die du da leistest! Weiter so. Was sind eigentlich deine Ziele bis 1.0.0.0? mfg Florian |
AW: ScriptEngine II (v. 0.5.2.0)
Danke für das Lob :-) *freu*
Meine Ziele bis 1.0.0.0 ... hm :gruebel: weiß ich noch nicht - obwohl: arrays ;-). Also konkrete Ziele habe ich nicht. Ich bin aber auch schon sehr zufrieden mit der aktuellen Version. Ich will eigentlich nur eine gute, schnelle und Objekt-Orientierte Script-Sprache mit Object-Pascal-Dialekt schreiben, mit der man kleine und größere Aufgaben erledigen kann. Zum Teil habe ich das auch bereits geschafft - ich habe zum einen ein sehr einfaches Script (ok, Multi-Threaded 8-), aber das ist nur nebensächlich), mit dem ich mir die Anzahl der Quelltextzeilen in allen .pas-Dateien in einem Ordner sowie den Unterordnern holen kann. Zum anderen entwickle ich nebenbei noch ein Spiel, in der die Script-Engine die komplette Programm-Logik ausmacht. Was als nächstes sicher noch kommen wird ist der Typ "AnsiString", der ab Delphi 2009 doch etwas wichtiger geworden ist. Aber sonst habe ich keine konkrete Road-Map, fast immer nur das, was ich gerade brauche ;-). |
AW: ScriptEngine II (v. 0.5.2.0)
Auch gut.
SE2 ist ja jetzt schon so mächtig, dass man damit Spiele programmieren kann. Da mach ich mir wegen der Geschwindigkeit keine großen Sorgen mehr ;). Dann hoff ich mal, dass du schon bald wieder was neues brauchst, arrays finde ich persönlich nicht so wichtig (kann man alles auch über TList machen). mfg Florian |
AW: ScriptEngine II (v. 0.5.2.0)
Ich habe eben noch schnell einen kleine Fehler im Compiler ausgebessert. Neue Version ist auf SourceForge bereits hochgeladen. Download-Links ist der alte.
Gruß |
AW: ScriptEngine II (v. 0.5.2.0)
Hey, grandios was sich mit der SE2 alles machen lässt. :shock: :thumb:
Hier mal meine Vorschläge/Kritik/Fragen: :-D - Ist es ein großer Aufwand den Typ Char einzubaun? Denn so muss man in jedem Script einen string auf len(1) prüfen. - Der kompilierte Script-binärstream wächst mit größeren Scripts schnell an. Da lässt sich aber aufgrund der vielen Nullen schnell mal 1MB auf 40KB komprimieren. Kann man an der Größe irgendwas drehen, ohne die Runtimeperformance einzuschränken? - Könntest du evtl den Uses-Cleaner von CNPack vor Releases drüberlaufen lassen? (btw: Hast du die H2443-Warnung abgestellt? ^^ Das die erste Version mit immer der gleichen Compilerwarnung :wink: ) Danke, macht echt Spass damit zu experimentieren. Compilerzeit mal eben so gezehntelt... :lol: E: Achja bei der IDE wäre ein Parameter, um ein Script direkt zu laden, praktisch. |
AW: ScriptEngine II (v. 0.5.3.1)
Oh, ich habe irgendwie den letzten Post übersehen :oops:
Zitat:
Zitat:
Zitat:
Zitat:
@All: Neue Version :arrow: Version 0.5.3.1 Eine kleine Bugfix - Version
Download-Link ist im ersten Post. Grüße |
AW: ScriptEngine II (v. 0.5.3.2)
Neue Version :arrow: Version 0.5.3.2
Eine kleine Bugfix - Version
Download-Link ist im ersten Post. Grüße |
AW: ScriptEngine II (v. 0.5.3.2)
Liste der Anhänge anzeigen (Anzahl: 2)
Hi littleDave,
nachdem ich soeben den Daumen bei sourceforge gehoben habe, wollte ich meinen Lob auch an dieser Stelle ausschreiben: Die ScriptEngine II ist ein beachtliches One-Man-Project. Konsistent, sauber und schnell. Respekt! :thumb: Da du es selbst verwendest (z.B. in Gael), bin ich guter Dinge, dass du sie nicht so schnell fallen lässt und wir uns über stete Weiterentwicklung freuen dürfen. Diesen Thread verfolge ich schon seit längerem, hatte aber bisher keine Verwendung dafür. Doch das hat sich vor ein paar Tagen geändert. Für mein ![]() Falls es dich interessiert, hänge ich einen Screenshot Anhang 32129 und die Anhang 32130 an. Die kompletten Source-Codes sind bei Sourceforge drin (Link siehe oben). Als eine mögliche Erweiterung für die Zukunft würde ich mir die Unterstützung von anonymen Methoden wünschen. Dass die Umsetzung dieses Features etwas heikel ist, ist mir durchaus bewusst. Weiter so und mfg |
AW: ScriptEngine II (v. 0.5.3.3)
Hallo WladiD
sorry für die späte Antwort - ging bei mir leider nicht früher :-( Danke natürlich für das Lob :-) das freut mich wirklich. Ich bin auch guter Dinge, dass die SEII nicht so schnell aufgeben werde ;-). Dein Projekt schaut auch nicht schlecht aus. Ich habe mir das auch mal angeschaut und habe manchmal auch Verwendung für einen Funktionszeichner - und dieser reicht mir bisher wirklich vollkommen aus :thumb:. Das i-Tüpfelchen wäre für deine Sandbox noch die Code-Completion. Denn Quelltext kannst du dir in der IDE in der Unit uFormCodeEditor in der Klasse "TCodeEditor" abschauen. Aber wie gesagt - ich finde es jetzt schon sehr gut. Zitat:
@All: Neue Version :arrow: Version 0.5.3.3 Auf Grund von ein paar von mir bisher nicht beachteten Problemen bei partiellen Klassen, musste ich diese leider etwas beschränken. Das liegt nicht daran, dass ich das nicht will, sondern weil es so wie bisher nicht funktioniert hat. Sobald das Problem behoben ist, werde ich die partiellen Klassen wieder so wie im Moment benutzbar machen.
Download-Link ist im ersten Post. Grüße |
AW: ScriptEngine II (v. 0.5.3.3)
Liste der Anhänge anzeigen (Anzahl: 1)
Hi littleDave,
kein Problem wegen der verspäteten Antwort, kenne den Zeitfaktor leider auch viel zu gut. Die Codevervollständigung habe ich mir vorher auch schon angeschaut, bin aber auf die Schnelle (innerhalb von 10 Min.) nicht durchgestiegen und daher schnellstens verworfen. Auch wird diese Art von Code-Editor eh nur ein paar Math.*-Funktionen und Operatoren benötigen, daher lasse ich das vorerst. Aber wer weiß, vielleicht habe ich irgendwann nichts besseres zu tun. Dass du für die Easing-Suite eine Verwendung hast, überrascht und freut mich zugleich. Seit dem letzten Post habe ich sie erweitert, man kann jetzt jede Funktion über Bewegung (EaseReal-Tab) visualisieren, man hat noch mehr Modifikatoren (emInSnakeInverted und emOutSnakeInverted), und eine (für mich) nützliche Lookup-Table mit beliebigen Werten/Schritten. Hänge die aktuelle Version mal an, vielleicht wird es an Mehrwert für dich gewinnen. mfg |
AW: ScriptEngine II (v. 0.5.4.0)
Neue Version :arrow: Version 0.5.4.0
Diesmal habe ich die Patch-Version mal wieder etwas erhöht ;-). Wie vor etwas längerer Zeit angekündigt, habe ich den Delphi 2009+ - Support mal wieder verbessert. Das Äußert sich nun daran, dass es in der Script-Engine drei neue String-Typen gibt: AnsiString, PAnsiChar und PWideChar. Dadurch ist es nun endlich auch in den Unicode-Versionen von Delphi möglich - AnsiString-Methoden ohne Probleme in die ScriptEngine zu integrieren. In der SEII sind die String-Typen jetzt wie folgt gemapped:
ChangeLog:
Download-Link ist im ersten Post. Grüße |
AW: ScriptEngine II (v. 0.5.4.0)
Vielen Dank für das Update! :-D
Unter Delphi XE gibt es noch folgende Hinweise/Warnungen: Zitat:
Unter Delphi 2009: Zitat:
|
AW: ScriptEngine II (v. 0.5.4.0)
Hallo toms,
danke für die Warnungs-Liste für Delphi XE / D2009 Zitat:
Zitat:
Zitat:
Unter Delphi 2009: Zitat:
(wahrscheinlich habe ich bei mir in den Projektoptionen irgend ein Häkchen nicht gesetzt) Danke nochmal für die Liste, toms. |
AW: ScriptEngine II (v. 0.5.4.0)
Zitat:
Zitat:
Man konnte im Debugmode wenn eine Exeption autritt sagen "Diesen Exception-Typ nicht mehr anzeigen". Ist mir auch Mal unter ziemlich bösen Umständen an die Gurgel gegangen. :| |
AW: ScriptEngine II (v. 0.5.4.1)
Neue Version :arrow: Version 0.5.4.1
Mir ist in der letzten Version ein etwas größerer Fehler unterlaufen, daher schiebe ich schnell noch dieses Update hinterher:
Download-Link ist im ersten Post. Grüße |
AW: ScriptEngine II (v. 0.5.5.0)
Neue Version :arrow: Version 0.5.5.0
Ich habe diesmal wieder einige Änderungen am Script-Code in der Script-System-Unit vorgenommen. Genauer gesagt habe ich die Convert-Klasse komplett neu geschrieben. Die Routinen "IntToStr", "IntToStrDef", usw. haben jetzt einen anderen Namen. Daher kann es zu notwendigen Anpassungen am Script-Quelltext kommen. Die Benutzung der Convert-Klasse ist nun komplett an .NET angelehnt. Um einen String z.B. in einen Integer umzuwandeln, schreibt man nun
Delphi-Quellcode:
. Die "ToInt32" gibt es dabei in sehr vielen überladenen Varianten, also z.B. für floats, strings mit Default-Wert, usw. Allgemein funktioniert die Konvert-Klasse wie folgt:
System.Convert.ToInt32('12345');
System.Convert.[Optional: Try]To[Ziel-Typ]([Quell-Typ]) wobei Ziel-Typ z.B. Int32, Int64, Single, Double, String, usw. ist. Als positiven Ausgleich dafür habe ich die Performance der RunTime nochmal verbessert. Dadurch konnte die Auführungszeit von Scripten um bis zu 30% gesenkt werden.
Download-Link ist im ersten Post. Grüße |
AW: ScriptEngine II (v. 0.5.5.0)
Im Indy+Thread Demo erhalte ich eine Fehlermeldung Could not add the unit "System.Xml" (Linie 5)
|
AW: ScriptEngine II (v. 0.5.5.0)
Du musst in der IDE die Packages "installieren". In den Packages sind die jeweiligen Units. Um das zu machen, musst du in der IDE im linken PageControl die Seite "Packages" öffnen. Dort sind alle "Package-DLLs" aufgelistet, die im Moment geladen sind. Einfach einen Rechtsklick und man kann weitere DLLs hinzufügen oder vorhandene entfernen. Um zu sehen, welche Unit in welchen Package ist, gibt es unten im PageControl mit den Seiten "Messages", "Debug Output", etc. einen weiteren Tab: "Registered Packages". Dort kann man sich dann alle Units der Packages anschauen.
Lange Rede, kurzer Sinn: füge im "Packages"-Tab die DLLs "libXML.dll" und "libIndy.dll" hinzu und schon sollte es gehen. :-) |
AW: ScriptEngine II (v. 0.5.5.0)
Zitat:
PS: ![]() |
AW: ScriptEngine II (v. 0.5.5.0)
Zitat:
Delphi-Quellcode:
program Project1;
uses System.Threading, System.Xml, Net.Indy; type { Feed Query Data } TFeedQuery = record private FURL : string; FUsesUTF8 : boolean; public class function Create(URL: string; UsesUTF8: boolean): TFeedQuery; property URL : string read FURL; property UsesUTF8 : boolean read FUsesUTF8; end; class function TFeedQuery.Create(URL: string; UsesUTF8: boolean): TFeedQuery; begin result.FURL := URL; result.FUsesUTF8 := UsesUTF8; end; type { Execution Thread } TMyExecution = class(TExecutionContext) private FData : string; FError : boolean; FQuery : TFeedQuery; protected procedure Execute; override; function ExtractTitles: string; public constructor Create(Query: TFeedQuery); virtual; end; constructor TMyExecution.Create(Query: TFeedQuery); begin inherited Create; FQuery := Query; end; function TMyExecution.ExtractTitles: string; var s: string; iStart, iStop: integer; tmp : string; begin s := Self.FData; iStart := s.IndexOf('<title>'); while iStart > 0 do begin iStop := s.IndexOf('</title>'); if iStop > 0 then begin tmp := XML.Decode(s.Copy(iStart + string('<title>').Length, iStop - iStart - string('<title>').Length)); if Self.FQuery.UsesUTF8 then result := result + StringEncoding.ToString(StringEncoding.AsUTF8(tmp)) + #13#10 else result := result + tmp + #13#10; s := s.Copy(iStop + string('</title>').Length); iStart := s.IndexOf('<title>'); end else iStart := 0; end; end; procedure TMyExecution.Execute; var http: TIdHTTP; begin http := TIdHTTP.Create; try http.HandleRedirects := True; try Self.FData := http.Get(Self.FQuery.URL); Self.FData := Self.FData .Replace(#10, #13#10); except on e: EException do begin Self.FError := True; Self.FData := e.ToString; end; end; finally http.Free; end; end; function SelectFeedSource(var Query: TFeedQuery): boolean; begin result := True; Console.WriteLine('Press [d] for Delphi, [s] for Spiegel, [h] for Heise, [esc] to cancel'); while true do begin case Console.ReadKey.ToUpper of 'D' : begin Query := TFeedQuery.Create('http://www.delphipraxis.net/external.php?type=RSS2', False); break; end; 'S' : begin Query := TFeedQuery.Create('http://www.spiegel.de/schlagzeilen/tops/index.rss', False); break; end; 'H' : begin Query := TFeedQuery.Create('http://www.heise.de/newsticker/heise.rdf', True); break; end; Strings.FromASCIIIndex(KeyCodes.Escape) : begin result := False; exit; end; end; end; end; { Main APP } var t : TThread; c : TMyExecution; Query : TFeedQuery; begin if not SelectFeedSource(Query) then exit; repeat Console.Clear; c := TMyExecution.Create(Query); try t := TThread.NewThread(c); try t.Start; Console.WriteLine('Connecting ' + Query.URL); Console.Write('Waiting '); while (t.State <> ThreadState.Finished) do begin Console.Write('.'); TThread.Sleep(100); TThread.Sleep(100); TThread.Sleep(50); end; Console.Clear; if c.FError then begin Console.ForegroundColor := Colors.Red; Console.WriteLine(c.FData); Console.ForegroundColor := Colors.White; end else Console.WriteLine(c.ExtractTitles); finally t.Free; end; finally c.Free; end; Console.WriteLine; if not SelectFeedSource(Query) then exit; until False; end. |
AW: ScriptEngine II (v. 0.5.5.0)
Wieso muss der Code so unschön sein?
Delphi-Quellcode:
{ Main APP }
: : begin while SelectFeedSource(Query) do begin : : end; end. |
AW: ScriptEngine II (v. 0.5.5.0)
Weil es meine Programmiersprache ist :mrgreen: (hast ja recht ...)
|
AW: ScriptEngine II (v. 0.6)
Neue Version :arrow: Version 0.6
Ist wurde mal wieder Zeit für einen größeren Versionssprung. Neu dabei ist unter anderem die for-in-Schleife, hier mal (wie immer) die Übersicht:
Download-Link ist im ersten Post. Grüße |
AW: ScriptEngine II (v. 0.6)
NICE (:
Freut mich zu hören, dass sich in der SE2 immer noch so viel tut. Weiter so (: wenn das hier jetzt facebook wäre, würde ich mal "gefällt mir" klicken ;) mfg Florian |
AW: ScriptEngine II (v. 0.6)
Zitat:
Oder einen Danke-Button wie in der EE. |
AW: ScriptEngine II (v. 0.6)
Hi,
ich denke gerade darüber von RemObjects PascalScript auf deine ScriptEngine umzusteigen, aus dem einfachen Grund weil hier overloading unterstützt wird. Eines stört mich jedoch: Die Scripts müssen immer einen program-Header haben, in PascalScript konnte man den abschalten (über CompilerOptions). Kannst du das auch abschaltbar machen? Der verschwendet bei mir nur Platz, da ich ihn eh immer NPCScript oder so nennen würde und die Scripts über Dateinamen identifiziert werden. Edit: Und gibt es irgendwo Inc() und Dec()? Wenn nein, warum nicht? Edit 2: So, läuft ganz gut jetzt. Allerdings habe ich noch einen Feature-Wunsch: Meine Scripts terminieren die Runtime aus sich heraus und wenn ich direkt nach Abort() Finalize() und Free() aufrufe, knallt es. Daher brauche ich ein Notify-Event, irgendwie OnAborted oder so in der Runtime. Im finally ganz unten in TSE2ExecutionContext.Call dann so aufrufen:
Delphi-Quellcode:
if FDoAbort and Assigned(FOnAborted) then
FOnAborted(TObject(FExecutionData.RunTime)); |
AW: ScriptEngine II (v. 0.6)
Hallo WorstNightmare,
sorry für die späte Antwort, bin bisher nicht dazu gekommen Zitat:
Delphi-Quellcode:
function CompileScript(const Source: string): TSE2PE;
begin result := Compiler.Compile('program program1; ' + Source + ' begin end.'; end; Zitat:
Zitat:
|
AW: ScriptEngine II (v. 0.6)
Hi :)
Zitat:
IntVar.Inc; IntVar.Dec; Oder geht sowas nicht bei einfachen Variablen? Btw, schön zu hören das es bald Arrays gibt, obwohl man jetzt sowieso alles mit Listen machen würde (ich zumindest :) Btw2, ist es möglich / auf der Todo Liste, dass man Generics nutzen kann? Gruß Eugen |
AW: ScriptEngine II (v. 0.6)
Mein RTTI-ClassImporter fügt jetzt einfach noch nach der Klasse, mit der das Script aufs Hauptprogramm zugreift, Inc und Dec für Integer ein. Ich hatte einfach keine Lust das in allen 250 Scripts mit + bzw - 1 zu ersetzen.
Zum Abbrechen der Runtime: Das habe ich dann auch schnell festgestellt^^ Deswegen möchte ich ja, dass wenn ich Abort aufrufe, ich benachrichtigt werde wenn es fertig mit Abbrechen ist und dann Free aufrufen kann. Eine andere Möglichkeit habe ich nicht, denn das Hauptprogramm weiß nicht automatisch, wann das Script fertig ist (die Teile haben eine Methode, die bei jedem Script unterschiedlich oft aufgerufen wird). |
AW: ScriptEngine II (v. 0.6)
Alle meine Scripts laufen jetzt schon seit längerer Zeit mit dieser Engine und ich muss sagen, ich bin sehr zufrieden.
Es gibt allerdings ein mittelschweres Problem: Der Speicherverbrauch. Für ein simples Script wie dieses ![]() Ich bin nicht ganz sicher warum für ein 600 Byte langes Script plötzlich 4,5 MB verbraucht werden, könnte es mit der verwendeten Unit zusammenhängen? Diese setzt sich aus den Klassen TEventInstance und TEventManager aus dieser ![]() ![]() |
AW: ScriptEngine II (v. 0.6)
Es gibt mehrere Caching-Systeme in der Script-Engine, die ich kurz erläutern will.
Wegen dem Implementierungsfortschritt: die Arrays sind soweit drinnen und funktionieren auch fast ohne Probleme (gibt noch ein paar Baustellen). Jedoch habe ich im Moment wenig Zeit, wodurch sich der Release leider etwas verzögert. Vielleicht bringe ich zur Überbrückung auch noch ein Zwischen-Release heraus, in der die Arrays noch deaktiviert sind, da ich doch noch ein paar kleine Fehler entdeckt habe. Gruß David |
AW: ScriptEngine II (v. 0.6)
Hallo an Alle. Zuerst muss ich sagen: SUPER Sache!!! Und grooooßßßßesss Lob an David!!!! 8-)
So ein SciptEngine ist gerade das was ich schon lange gesucht habe. Ich habe aber eine Frage diesbezüglich: Im wesentlichen brauche ich nur ein Zugriff vom Hauptprogramm auf die Script-Funktionen. Frage 1): Gibt es ein allgemeiner Aufruf einer Funktion? (ohne Benutzung von TSE2RunAccess.FindMethod ?) Bei mir ist es der Fall dass die Funktionen im Script vom Anwender Definiert werden und ich diese dann zur Laufzeit aufrufen will. Frage 2): Kann man auf Funktionen mit den Arrays für solche zwecke verwenden? Ich habe eigentlich in den ParamTypes kein Array gefunden. Ich hoffe ihr könnt mir Helfen. Danke im Voraus, Denis. |
AW: ScriptEngine II (v. 0.6.1)
Neue Version :arrow: Version 0.6.1
Vor längerer Zeit habe ich ja eine neue Version angekündigt. Nun ist es soweit - wobei ich gleich sagen muss: arrays sind immer noch nicht fertig eingebaut. Somit ist das hier eher ein Bug-Fix-Release sowie eine experimentelle Version für arrays. Es ist noch nicht alles drinnen aber ich habe Arrays jetzt erstmal nicht deaktiviert. Falls also wer die Arrays mal ausprobieren will, es geht noch nicht alles. Zudem gibt es folgende wichtige Einschränkung: man kann arrays nicht "inline" deklarieren, also folgendes geht NOCH NICHT:
Delphi-Quellcode:
. Stattdessen muss man immer vorher den Array-Typ deklarieren:
var t: array of integer;
Delphi-Quellcode:
.
type TIntArray = array of integer;
Download-Link ist im ersten Post. Grüße |
AW: ScriptEngine II (v. 0.6.1)
Morgen David,
ich möchte mich in deine ScriptEngine einarbeiten, dabei plane ich Funktionen zu schreiben, welchen ich die Parameter als Array (
Delphi-Quellcode:
) übergeben möchte.
type TMyRecordList = array of TMyRecord;
Folgenden Aufruf hatte ich daher von Seite der Delphi-Anwendung gedacht:
Delphi-Quellcode:
Method := RunTime.CodeAccess.FindMethod('get_Test', 'Records', [pmIn, pmResult], [btArray,btDouble]);
if Method <> nil then ShowMessage(FloatToStr(RunTime.Call(Method, [MyRecordList]))); In der ScriptEngine sieht die Definition wie folgt aus:
Delphi-Quellcode:
Die unit Records habe ich sowohl für Delphi und der ScriptEngine geschrieben. Da du ja bei den Arrays noch in der Entwicklung bist, interessiert mich, ob ich etwas falsch verstanden habe oder ob mein Weg so noch nicht möglich ist?
type TMyRecordList = array of TMyRecordList;
implementation function get_Test(MyRecordList: TMyRecordList): double; export; begin result:= MyRecordList[0].dbl_Betrag * 3.5; end; LG Dirk |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:00 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