Masalah SEH mencegah perpustakaan ini bekerja dengan baik dengan Delphi. Pengembangan bergeser ke https://github.com/tinybiggames/callisto, yang tidak menderita masalah ini dan lainnya.

Jetlua adalah perpustakaan integrasi Luajit yang canggih dibuat dengan cermat untuk pengembang Delphi, memberikan antarmuka yang mulus antara aplikasi Delphi dan skrip Luajit. Dengan menggabungkan ketahanan yang melekat pada Delphi? Dengan efisiensi runtime yang luar biasa dari kompilasi Just-in-Time (JIT) Luajit, Jetlua dioptimalkan untuk pengembang profesional yang bertujuan untuk memasukkan kemampuan dinamis ⚡ ke dalam perangkat lunak mereka tanpa kompromi pada kinerja atau stabilitas.
Jetlua mengintegrasikan Luajit Versi 2.1+, secara statis dikompilasi ke dalam aplikasi Delphi Anda, menghilangkan kebutuhan akan dependensi DLL eksternal? Ini sangat meningkatkan portabilitas? dari aplikasi, menyederhanakan distribusi, dan memfasilitasi penggabungan kemampuan skrip dalam lingkungan Delphi.
Menggunakan Jetlua, pengembang dapat mengekspos metode kelas Delphi ke skrip LUA, sehingga melahirkan aplikasi mereka dengan ekstensibilitas dinamis? Perpustakaan memanfaatkan RTTI Delphi (informasi tipe run-time)? Untuk memfasilitasi metode pendaftaran dan integrasi yang efisien dengan Luajit secara efisien.
Selain itu, Jetlua memanfaatkan antarmuka fungsi asing yang kuat (FFI)? Ditawarkan oleh Luajit, memungkinkan rutinitas Delphi/DLL yang diekspor untuk didaftarkan dan digunakan secara langsung dalam skrip LUA. Memanfaatkan FFI menghilangkan kebutuhan untuk binding perantara yang kompleks, memfasilitasi integrasi yang lebih cepat dan lebih efektif antara Delphi dan Luajit.
dbg() dalam kode Luajit memulai sesi debugging interaktif, penting untuk identifikasi masalah runtime.import Kustom memungkinkan skrip untuk digabungkan, dikompilasi menjadi satu unit, dan secara opsional tertanam sebagai sumber daya EXE, menghasilkan aplikasi yang sepenuhnya mandiri. Untuk mulai menggunakan Jetlua, ikuti langkah -langkah ini:
Program Testbed memberikan contoh komprehensif dari kemampuan Jetlua, menunjukkan integrasi skrip Luajit dengan aplikasi Delphi. Fungsi utama yang diilustrasikan termasuk operasi aritmatika ➕, manipulasi string ✂️, penanganan rekaman, manajemen memori ?, dan penanganan kesalahan yang canggih
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 )Di bawah ini adalah contoh yang menggambarkan cara menggunakan jetlua dalam aplikasi Delphi:
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 ;Contoh ini menunjukkan keserbagunaan dan interoperabilitas? Delphi dan Luajit:
Jetlua menggunakan Luajit 2.1+, secara statis tertanam ke dalam aplikasi Delphi untuk memastikan penyebaran mandiri tanpa dependensi perpustakaan eksternal.
Rutin Delphi dinyatakan sebagai metode kelas yang diterbitkan secara otomatis terdaftar oleh Jetlua, menghilangkan kebutuhan untuk pengikatan manual. Metode menyatakan seperti published menjamin aksesibilitas mereka dari skrip Luajit.
Antarmuka fungsi asing Luajit (FFI) memungkinkan pendaftaran dan doa rutinitas Delphi asli langsung dari skrip LUA. Keuntungan utama meliputi:
Jetlua mendukung tipe data mendasar untuk parameter dan nilai pengembalian, termasuk:
stringfloat (tunggal atau ganda)?Boolean ✅Pointer ➡️Saat merancang metode untuk interoperabilitas Luajit, pastikan semua parameter dan nilai pengembalian sesuai dengan tipe yang didukung ini.
Pointer yang dihasilkan dalam Delphi harus dikelola secara eksklusif oleh Delphi. Pertimbangan penting meliputi:
Program testbed memberikan contoh demonstratif untuk mengintegrasikan skrip luajit dengan aplikasi Delphi, yang mencakup:
Jetlua memberikan solusi yang efisien dan kuat untuk mengintegrasikan skrip Luajit ke dalam aplikasi Delphi. Ini memberdayakan pengembang untuk memanfaatkan fleksibilitas dinamis Luajit tanpa mengorbankan kekuatan intrinsik Delphi dalam pengetikan dan kinerja. Dengan menggabungkan Jetlua, pengembang dapat secara substansial menambah ekstensibilitas, pemeliharaan, dan potensi kustomisasi dari aplikasi Delphi mereka.
Apakah tujuan Anda adalah untuk memfasilitasi kustomisasi runtime atau menerapkan konfigurasi berbasis skrip yang kompleks, Jetlua menawarkan cara yang kuat dan mudah diakses bagi pengembang Delphi untuk mencapai integrasi skrip yang ditingkatkan?
Kontribusi untuk Jetlua sangat dianjurkan. Jangan ragu untuk mengirimkan masalah, menyarankan fitur baru, atau membuat permintaan tarik untuk memperluas kemampuan dan ketahanan mesin skrip.
Jetlua didistribusikan di bawah? Lisensi BSD-3-Clause , memungkinkan redistribusi dan penggunaan dalam bentuk sumber dan biner, dengan atau tanpa modifikasi, dalam kondisi tertentu. Lihat file lisensi untuk lebih jelasnya.
Untuk pengembang Delphi profesional yang tertarik untuk meningkatkan fleksibilitas aplikasi dengan kemampuan skrip, Jetlua menawarkan solusi yang diuji dan andal yang membuat semuanya tetap mandiri dan berkinerja.

Dibuat dengan ❤️ di Delphi