
Крипт представляет собой сложный? 99 сценариальный двигатель, тщательно изготовленный для опытных разработчиков Delphi. Используя компактный, но очень универсальный компилятор TinyCC ,? С Cript Delphi разработчики могут компилировать и выполнять? Сценарии во время выполнения, прямо в? память и генерировать выход в форме? Win64 исполняемые файлы (.exe), библиотеки динамической связи (.dll) или объектные файлы (.obj).
.dll , .a и .lib . Cript использует TinyCC , который статически связан со временем выполнения Delphi, для компиляции и выполнения? код динамически. Все критические? Операции ввода-вывода ввода/вывода-такие как open , close , read и lseek -перепроверлены в реализации Delphi. Как правило, TinyCC потребует, чтобы файлы времени выполнения были доступны отдельно; Однако в Cript эти файлы хранятся в исполнении Delphi в качестве сжатых ресурсов, что приводит к? Автономная виртуализированная модель ввода/вывода. Когда TinyCC запрашивает доступ к файлам времени выполнения, пользовательский обработчик ввода -вывода Delphi проверяет встроенный архив Zip, тем самым обеспечивая бесшовную, эффективную и изолированную среду выполнения.
Крипт функционирует как канал для использования возможностей кода? 99 в рамках разработки Delphi. Включает ли он оптимизацию определенных операций для ⚡ повышенной производительности, взаимодействие с ранее существовавшим? Библиотеки, или увеличение функций Delphi с выразительными возможностями ?
TCScript является основным интерфейсом для участия в функциональных возможностях ? Ниже приведен обзор его основных компонентов:
csMEMORY : Скомпилируйте и выполняйте сценарии полностью в памяти.csLib : генерировать объектные файлы ( .obj ).csEXE : генерировать? Win64 исполняемый файл.csDLL : генерировать? Динамическая библиотека. 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 : Registers 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 : добавляет? исходный файл в блок компиляции.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 Project:
src в путь поиска Delphi.??cript в раздел использования вашего проекта .Вклад в CRIPT очень рекомендуется. Пожалуйста, не стесняйтесь отправлять проблемы, предложить новые функции или создавать запросы на притяжение, чтобы расширить возможности и надежность сценариста.
Крипт распространяется под? Лицензия BSD-3-CLAUSE. Для получения более подробной информации обратитесь к файлу LICENSE .
Стремитесь ли вы ⚡ повысить вычислительную производительность, беспрепятственно взаимодействовать с существующими? Библиотеки, или расширяют функции ваших приложений Delphi, Cript предоставляет мощное интегрированное решение для сочетания прочности Delphi и? 99 программирования.
? Разблокируйте новые возможности с помощью CRIPT и повысить опыт разработки Delphi с помощью методов гибридного программирования.

Сделано с ❤ в Delphi