SEH 문제로 인해이 라이브러리는 델파이와 제대로 작동하지 않습니다. 개발은 https://github.com/tinybiggames/callisto로 이동하며 이러한 문제와 다른 문제로 어려움을 겪지 않습니다.

Jetlua는 델파이 개발자를 위해 세 심하게 제작 된 고급 Luajit Integration 라이브러리로 델파이 애플리케이션과 Luajit 스크립트간에 완벽한 인터페이스를 제공합니다. 델파이의 고유 한 견고성을 병합하여? Luajit의 JIT (Just-In-Time) 컴파일의 탁월한 런타임 효율성으로 Jetlua는 성능이나 안정성을 손상시키지 않으면 서 동적 ⚡ 기능을 소프트웨어에 통합하는 것을 목표로하는 전문 개발자에게 최적화됩니다.
Jetlua는 Luajit 버전 2.1+를 통합하여 델파이 응용 프로그램에 정적으로 컴파일하여 외부 DLL 의존성이 필요하지 않습니까? 이것은 이식성을 크게 향상시킵니다. 응용 프로그램 중 배포를 단순화하고 델파이 환경 내에서 스크립팅 기능의 통합을 용이하게합니다.
개발자는 Jetlua를 사용하여 Delphi 클래스 방법을 LUA 스크립트에 노출시켜 동적 확장 성으로 응용 프로그램을 부여 할 수 있습니다. 도서관은 Delphi의 RTTI (런타임 유형 정보)를 활용합니까? 효율적인 방법 등록 및 Luajit과의 통합을 간소화 한 방식으로 용이하게합니다.
또한 Jetlua는 강력한 외국 기능 인터페이스 (FFI)를 활용합니까? Luajit에서 제공하는 수출 된 Delphi/DLL 루틴을 LUA 스크립트 내에 직접 등록하고 활용할 수 있습니다. FFI를 활용하면 복잡한 중간 결합에 대한 필요성이 없어져 델파이와 루아 지 사이의 더 빠르고 효과적인 통합을 용이하게합니다.
dbg() 삽입은 런타임 문제 식별에 필수적인 대화식 디버깅 세션을 시작합니다.import 명령을 사용하면 스크립트를 결합하고 단일 장치로 컴파일하고 선택적으로 EXE 리소스로 내장되어 완전히 자체적으로 포함 된 애플리케이션이 발생합니다. Jetlua를 활용하려면 다음 단계를 따르십시오.
Testbed 프로그램은 Jetlua의 기능에 대한 포괄적 인 예를 제공하여 Luajit 스크립팅을 Delphi 응용 프로그램과 통합하는 것을 보여줍니다. 설명 된 주요 기능에는 산술 작업 ➕, 문자열 조작 ✂️, 레코드 처리, 메모리 관리? 및 정교한 오류 처리가 포함됩니다.
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 )아래는 델파이 애플리케이션 내에서 Jetlua를 사용하는 방법을 보여주는 예입니다.
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 ;이 예제는 다양성과 상호 운용성을 보여줍니다. 델파이와 루아 지의 :
Jetlua는 Luajit 2.1+를 사용하여 델파이 애플리케이션에 정적으로 내장되어 외부 라이브러리 종속성없이 자체 포함 배포를 보장합니다.
출판 된 클래스 방법으로 선언 된 델파이 루틴은 Jetlua가 자동으로 등록하여 수동 바인딩이 필요하지 않습니다. published 방법을 선언하면 Luajit 스크립트의 접근성이 보장됩니다.
Luajit의 외국 기능 인터페이스 (FFI)는 LUA 스크립트에서 직접 네이티브 델파이 루틴을 등록하고 호출 할 수 있습니다. 주요 장점은 다음과 같습니다.
Jetlua는 다음을 포함하여 매개 변수 및 리턴 값에 대한 기본 데이터 유형을 지원합니다.
stringfloat (단일 또는 이중)?Boolean ✅Pointer ➡️Luajit 상호 운용성을위한 방법을 설계 할 때 모든 매개 변수와 반환 값이 이러한 지원되는 유형을 준수해야합니다.
델파이 내에서 생성 된 포인터는 델파이가 독점적으로 관리해야합니다. 중요한 고려 사항에는 다음이 포함됩니다.
Testbed 프로그램은 Luajit 스크립팅을 Delphi 응용 프로그램과 통합하는 실증적 인 예를 제공합니다.
Jetlua는 Luajit 스크립팅을 Delphi 응용 프로그램에 통합하기위한 효율적이고 강력한 솔루션을 제공합니다. 이를 통해 개발자는 타이핑과 성능에 대한 델파이의 본질적인 강점을 손상시키지 않으면 서 Luajit의 동적 유연성을 활용할 수 있습니다. Jetlua를 통합함으로써 개발자는 델파이 응용 프로그램의 확장 성, 유지 가능성 및 사용자 정의 잠재력을 실질적으로 강화할 수 있습니다.
Jetlua는 런타임 사용자 정의를 용이하게하거나 복잡한 스크립트 기반 구성을 구현하는 것이 목표인지 여부에 관계없이 델파이 개발자가 강화 된 스크립팅 통합을 달성 할 수있는 강력하고 액세스 가능한 수단을 제공합니다.
Jetlua 에 대한 기여는 적극 권장됩니다. 스크립팅 엔진의 기능과 견고성을 확장하기 위해 문제를 제출하거나 새로운 기능을 제안하거나 풀 요청을 작성하십시오.
Jetlua가 배포되어 있습니까? BSD-3-Clause 라이센스 , 특정 조건 하에서 수정 유무에 관계없이 소스 및 이진 형태의 재분배 및 사용을 허용합니다. 자세한 내용은 라이센스 파일을 참조하십시오.
스크립팅 기능으로 응용 프로그램 유연성을 향상시키는 데 관심이있는 전문 델파이 개발자의 경우 Jetlua는 모든 것을 자체 포함하고 성능을 유지하는 테스트 및 신뢰할 수있는 솔루션을 제공합니다.

델파이에서 ❤️로 제작되었습니다