
“ Cript”代表了一個精緻的腳本引擎,精心製作了經驗豐富的Delphi開發人員。利用緊湊而高度的TinyCC編譯器, “ cript”無縫將動態後端代碼生成整合到Delphi開發環境中。有了“ Cript ,Delphi開發人員可以編譯和執行?直接在運行時腳本?內存,並以形式產生輸出? win64可執行文件(.exe),動態鏈接庫(.dll)或對象文件(.OBJ)。
.dll , .a和.lib文件。cript採用tinycc (靜態鏈接到Delphi運行時)來編譯和執行?動態代碼。全部關鍵嗎?運行時I/O操作(例如open , close , read和lseek )已重新列為Delphi-intagity實現。通常,TinyCC需要單獨提供運行時文件;但是,在“ cript”中,這些文件存儲在Delphi可執行文件中,作為壓縮資源,導致A?獨立的虛擬化I/O模型。當TinyCC請求訪問運行時文件時,自定義Delphi I/O處理程序會檢查嵌入式ZIP檔案,從而確保一個無縫,高效且孤立的執行環境。
cript是利用Delphi開發框架內的99代碼功能的渠道。它是否涉及優化特定的操作以增強性能,與先前存在的接口?圖書館,或增強具有? Cript的表達功能的Delphi功能設置,可提供凝聚力和復雜的開發工具集。
tcscript是用於使用cript功能的主要界面。以下是其核心組件的概述:
csMEMORY :完全在內存中編譯和執行腳本。csLib :生成對象文件( .obj )。csEXE :生成A? Win64可執行。csDLL :生成A?動態鏈接庫。 csCONSOLE :目標?控制台應用程序子系統。csGUI :目標?圖形用戶界面子系統。 constructor Create() :初始化tcscript的實例。destructor Destroy() :?釋放與TCScript實例相關的資源。procedure SetErrorHandler(const ASender: Pointer; const AHandler: TCScriptErrorEvent) :為錯誤管理分配一個自定義錯誤處理程序。procedure GetErrorHandler(var ASender: Pointer; var AHandler: TCScriptErrorEvent) :檢索當前分配的錯誤處理程序。function AddLibraryPath(const APath: string): Boolean :註冊a?編譯器的庫路徑。function AddIncludePath(const APath: string): Boolean :登錄一個定位標頭文件的路徑。function SetOutputType(const AOutputType: TCScriptOutputType): Boolean :指定腳本編譯所需的輸出類型。function CompileString(const ABuffer: string): Boolean :編譯提供的字符串?代碼。function AddFile(const AFilename: string): Boolean :添加A?源文件到彙編單元。function Run(): Boolean :執行編譯腳本。function AddLibrary(const AName: string): Boolean :添加在執行過程中要動態鏈接的外部庫。procedure AddSymbol(const AName: string; AValue: Pointer) :註冊腳本上下文的符號。function GetSymbol(const AName: string): Pointer :檢索註冊符號的地址。procedure Reset() :重置TCScript實例,清除先前的狀態。function SaveOutputFile(const AFilename: string): Boolean :將編譯的輸出保存到指定的?文件。以下示例說明瞭如何實例化tcscript ,添加文件進行編譯並執行結果腳本:
procedure CScriptErrorEvent ( const ASender: Pointer; const AText: string);
begin
WriteLn(AText);
end ;
procedure AddFileRun ();
var
LCScript: TCScript;
begin
LCScript := TCScript.Create();
try
// Set the ️ error handler
LCScript.SetErrorHandler( nil , CScriptErrorEvent);
// Configure the output type for in-memory execution
LCScript.SetOutputType(csMEMORY);
// Add include and library paths
LCScript.AddIncludePath( ' res/include ' );
LCScript.AddLibraryPath( ' res/lib ' );
// Add the ? source file to the scripting engine
LCScript.AddFile( ' res/src/test01.c ' );
// Execute the compiled script
if not LCScript.Run() then
WriteLn( ' Failed to execute script. ' );
finally
// Release resources
LCScript.Free();
end ;
end ;將“ cript”整合到您的delphi項目中:
src文件夾添加到Delphi搜索路徑。??cript 。強烈鼓勵對克里普的貢獻。請隨時提交問題,建議新功能或創建拉動請求,以擴大腳本引擎的功能和魯棒性。
克里普分佈在? BSD-3-CAREASE許可證。有關更多詳細信息,請參閱LICENSE文件。
您是否尋求提高計算性能,與現有的無縫接口?圖書館或擴展了Delphi應用程序的功能, “ Cript”提供了一個功能強大的集成解決方案,用於結合Delphi和? 99編程的優勢。
?通過“ Cript”解鎖新的可能性,並通過混合編程技術提高您的Delphi開發經驗。

用❤️在德爾菲製造