SEH -Probleme verhindern, dass diese Bibliothek ordnungsgemäß mit Delphi funktioniert. Die Entwicklung verschiebt sich auf https://github.com/tinybiggames/callisto, was nicht unter diesen und anderen Themen leidet.

Jetlua ist eine fortschrittliche Luajit -Integrationsbibliothek, die für Delphi -Entwickler sorgfältig gefertigt wurde und eine nahtlose Schnittstelle zwischen Delphi -Anwendungen und Luajit -Skripten bietet. Durch die Verschmelzung von Delphis inhärenter Robustheit? Mit der außergewöhnlichen Laufzeit-Effizienz der Just-in-Time-Zusammenstellung von Luajit ist JETLUA für professionelle Entwickler optimiert, die darauf abzielen, dynamische Funktionen in ihre Software einzubeziehen, ohne die Leistung oder Stabilität zu beeinträchtigen.
Jetlua integriert die Luajit -Version 2.1+, die statisch in Ihre Delphi -Anwendung zusammengestellt ist und die Notwendigkeit externer DLL -Abhängigkeiten beseitigt? Dies verbessert die Portabilität erheblich? Vereinfacht der Anwendung die Verteilung und erleichtert die Einbeziehung von Skriptfunktionen in Delphi -Umgebungen.
Mit JETLUA können Entwickler Delphi -Klassenmethoden in LUA -Skripten aussetzen, wodurch ihre Anwendungen mit dynamischer Erweiterbarkeit ausgestattet werden? Die Bibliothek nutzt Delphis RTTI (Laufzeitinformationen)? Erleichterung der effizienten Methodenregistrierung und -integration in Luajit in stromlinienförmiger Weise.
Darüber hinaus nutzt Jetlua die leistungsstarke Fremdfunction -Schnittstelle (FFI)? Angebot von Luajit, sodass exportierte exportierte Delphi/DLL -Routinen direkt registriert und in Lua -Skripten verwendet werden können. Durch die Nutzung von FFI wird die Notwendigkeit komplexer Vermittlungsbindungen beseitigt und eine schnellere und effektivere Integration zwischen Delphi und Luajit erleichtert.
dbg() in den Luajit -Code initiiert eine interaktive Debugging -Sitzung, die für die Identifizierung von Laufzeitproblemen essentiell ist.import ermöglichen es, Skripte zu kombinieren, zu einer einzigen Einheit zusammenzustellen und optional als Exe-Ressource eingebettet, was zu einer vollständig in sich geschlossenen Anwendung führt. Befolgen Sie die folgenden Schritte, um Jetlua zu verwenden:
Das Testbed -Programm bietet ein umfassendes Beispiel für die Funktionen von Jetlua und demonstriert die Integration von Luajit -Skripten mit einer Delphi -Anwendung. Zu den wichtigsten dargestellten wichtigen Funktionen gehören arithmetische Operationen ➕, String Manipulation ✂️, Aufzeichnungsbearbeitung, Speicherverwaltung? Und anspruchsvolle Fehlerbehandlung
print ( " Testing TTestClass methods... " )
print ( " Add: " , TTestClass . Add ( 5 , 3 ))
print ( " Multiply: " , TTestClass . Multiply ( 4.5 , 2.0 ))
print ( " Concat: " , TTestClass . Concat ( " Hello " , " World " ))
-- Record handling example
local rec = TTestClass . CreateRecord ( 1 , " Test Record " , 42.0 )
print ( " Initial Record Value: " , TTestClass . GetRecordValue ( rec ))
TTestClass . UpdateRecord ( rec , 100.0 )
print ( " Updated Record Value: " , TTestClass . GetRecordValue ( rec ))
-- Memory management example
local mem = TTestClass . AllocateMemory ( 4 )
TTestClass . WriteToMemory ( mem , 12345 )
print ( " Memory Value: " , TTestClass . ReadFromMemory ( mem ))
TTestClass . FreeMemory ( mem )
-- FFI example: Calling a native function directly
local ffi = require ( " ffi " )
ffi . cdef [[
int Add ( int a , int b );
]]
print ( " FFI Add: " , ffi . C . Add ( 10 , 20 ))
-- Loading an external DLL and accessing its functions
ffi . cdef [[
void MessageBoxA ( void * hwnd , const char * text , const char * caption , int type );
]]
local user32 = ffi . load ( " user32.dll " )
user32 . MessageBoxA ( nil , " Hello from LuaJIT! " , " FFI Example " , 0 )Im Folgenden finden Sie ein Beispiel, das zeigt, wie Jetlua innerhalb einer Delphi -Anwendung verwendet wird:
type
TTestRecord = record
ID: Integer;
Name : string;
Value : Double;
end ;
PTestRecord = ^TTestRecord;
{ $M+ }
TTestClass = class
published
class function Add (A, B: Integer): Integer;
class function Multiply (A, B: Double): Double;
class function Concat ( const A, B: string): string;
class function CreateList : TStringList;
class function GetListCount (List: TStringList): Integer;
class function CreateRecord (ID: Integer; const Name : string; Value : Double): TTestRecord;
class procedure UpdateRecord (P: PTestRecord; NewValue: Double);
class function GetRecordValue (P: PTestRecord): Double;
class function AllocateMemory (Size: Integer): Pointer;
class procedure FreeMemory (P: Pointer);
class procedure WriteToMemory (P: Pointer; Value : Integer);
class function ReadFromMemory (P: Pointer): Integer;
end ;
{ $M- }
var
LJetLua: TJetLua;
LRec: TTestRecord;
begin
LJetLua := TJetLua.Create();
try
try
LJetLua.RegisterRoutines(TTestClass);
LJetLua.LoadString(CScript);
WriteLn( ' Integer value: ' , LJetLua.Call( ' add ' , [ 50 , 50 ]).AsInteger);
WriteLn( ' String value: ' , LJetLua.Call( ' concat ' , [ ' Hello, ' , ' World! ' ]).AsString);
LRec.ID := 1 ;
LRec. Name := ' test ' ;
LRec. Value := 200 ;
LJetLua.Call( ' process_record ' , [@LRec, ' test ' ]);
except
on E: Exception do
begin
WriteLn(Format( ' Error: %s ' , [E.Message]));
end ;
end ;
finally
LJetLua.Free();
end ;
end ;Dieses Beispiel zeigt die Vielseitigkeit und Interoperabilität? von Delphi und Luajit:
Jetlua verwendet Luajit 2.1+, die statisch in die Delphi-Anwendung eingebettet sind, um eine in sich geschlossene Bereitstellung ohne externe Bibliotheksabhängigkeiten zu gewährleisten.
Delphi -Routinen, die als veröffentlichte Klassenmethoden deklariert sind, werden automatisch von Jetlua registriert, wodurch die Bedarf an manueller Bindung beseitigt wird. Die Erklärung von Methoden als published garantiert ihre Zugänglichkeit von Luajit -Skripten.
Die LUAJIT -Fremdenfunktionsschnittstelle (FFI) ermöglicht die Registrierung und Aufruf von nativen Delphi -Routinen direkt aus Lua -Skripten. Zu den wichtigsten Vorteilen gehören:
JETLUA unterstützt grundlegende Datentypen sowohl für Parameter als auch für Rückgabewerte, einschließlich:
stringfloat (einzeln oder doppelt)?Boolean ✅Pointer ➡️Stellen Sie beim Entwerfen von Methoden für die Interoperabilität von Luajit sicher, dass alle Parameter und Rückgabetypen diesen unterstützten Typen entsprechen.
In Delphi generierte Zeiger sollten ausschließlich von Delphi verwaltet werden. Wichtige Überlegungen sind:
Das Testbed -Programm bietet ein demonstratives Beispiel für die Integration von Luajit -Scripting in eine Delphi -Anwendung, die umfasst:
JETLUA bietet eine effiziente und robuste Lösung für die Integration von Luajit -Skripten in Delphi -Anwendungen. Es ermöglicht den Entwicklern, die dynamische Flexibilität von Luajit zu nutzen, ohne die intrinsischen Stärken von Delphi in der Typisierung und Leistung zu beeinträchtigen. Durch die Einbeziehung von Jetlua können Entwickler die Erweiterbarkeit, Wartbarkeit und Anpassungspotential ihrer Delphi -Anwendungen erheblich erweitern.
Unabhängig davon, ob Ihr Ziel es ist, die Anpassung der Laufzeit zu erleichtern oder komplexe Skript-basierte Konfigurationen zu implementieren, bietet Jetlua Delphi-Entwicklern ein leistungsstarkes und zugängliches Mittel, um eine verbesserte Skriptintegration zu erreichen?
Beiträge zu Jetlua sind sehr gefördert. Bitte zögern Sie nicht, Probleme einzureichen, neue Funktionen vorzuschlagen oder Pull -Anfragen zu erstellen, um die Funktionen und Robustheit der Skriptmotor zu erweitern.
Jetlua ist unter dem verteilt? BSD-3-Klausel-Lizenz , die Umverteilung und Verwendung sowohl in Quellen- als auch in binären Formularen mit oder ohne Modifikation unter bestimmten Bedingungen ermöglichen. Weitere Informationen finden Sie in der Lizenzdatei.
Für jeden professionellen Delphi-Entwickler, der an der Flexibilität der Anwendungen mit Skriptfunktionen interessiert ist, bietet JETLUA eine getestete und zuverlässige Lösung, die alles in sich selbst zusammenhängt.

Hergestellt mit ❤️ in Delphi