
¿Cript representa un motor sofisticado? Aprovechar el compilador TinyCC compacto pero altamente versátil, CRIPT integra perfectamente la generación de código de backend dinámico en el entorno de desarrollo de Delphi. ¿ Con? Scripts en tiempo de ejecución, directamente adentro? memoria y generar salida en forma de? Win64 Ejecutables (.exe), bibliotecas de enlace dinámico (.dll) o archivos de objetos (.obj).
.dll , .a y .lib . ¿Cript emplea a TinyCC , que está estáticamente vinculado al tiempo de ejecución de Delphi, para compilar y ejecutar? código dinámicamente. ¿Todo crítico? Las operaciones de E/S de tiempo de ejecución, como open , close , read y lseek , se redirigen a implementaciones nativas de Delphi. Por lo general, TinyCC requeriría que los archivos de tiempo de ejecución estén disponibles por separado; Sin embargo, en ? modelo de E/S virtualizado autónomo. Cuando TinyCC solicita acceso a archivos de tiempo de ejecución, un controlador de E/S de Delphi personalizado verifica el archivo zip integrado, asegurando así un entorno de ejecución sin problemas, eficiente y aislado.
? ¿Ya se trata de optimizar operaciones particulares para el rendimiento mejorado ⚡, interfaciendo con preexistir? Las bibliotecas, o el aumento del conjunto de características de Delphi con las capacidades expresivas de?, ? ", CRIPT proporciona un conjunto de herramientas de desarrollo coherente y sofisticado.
TCScript es la interfaz principal para participar con las funcionalidades de CRIPT . A continuación se muestra una descripción general de sus componentes principales:
csMEMORY : compilar y ejecutar scripts completamente en la memoria.csLib : Genere archivos de objetos ( .obj ).csEXE : ¿Generar A? Win64 Ejecutable.csDLL : Generar A? Biblioteca de enlace dinámico. csCONSOLE : ¿Objetivos? Subsistemas de aplicaciones de consola.csGUI : ¿Objetivos? Subsistemas gráficos de interfaz de usuario. constructor Create() : inicializa una instancia de TCScript .destructor Destroy() :? Libera recursos vinculados a la instancia de TCScript .procedure SetErrorHandler(const ASender: Pointer; const AHandler: TCScriptErrorEvent) : asigna un controlador de errores personalizado para la gestión de errores.procedure GetErrorHandler(var ASender: Pointer; var AHandler: TCScriptErrorEvent) : Recupera el controlador de errores asignado actualmente.function AddLibraryPath(const APath: string): Boolean : registra a? ruta de biblioteca para el compilador.function AddIncludePath(const APath: string): Boolean : registra una ruta de inclusión para localizar archivos de encabezado.function SetOutputType(const AOutputType: TCScriptOutputType): Boolean : Especifica el tipo de salida deseado para la compilación de script.function CompileString(const ABuffer: string): Boolean : compila una cadena proporcionada de? código.function AddFile(const AFilename: string): Boolean : agrega A? Archivo de origen a la unidad de compilación.function Run(): Boolean : ejecuta el script compilado.function AddLibrary(const AName: string): Boolean : agrega una biblioteca externa para estar dinámicamente vinculada durante la ejecución.procedure AddSymbol(const AName: string; AValue: Pointer) : registra un símbolo del contexto de secuencias de comandos.function GetSymbol(const AName: string): Pointer : recupera la dirección de un símbolo registrado.procedure Reset() : Restablece la instancia de TCScript , borrando los estados anteriores.function SaveOutputFile(const AFilename: string): Boolean : guarda la salida compilada a un especificado? archivo.El siguiente ejemplo ilustra cómo instanciar TCScript , agregar un archivo para la compilación y ejecutar el script resultante:
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 ;Para integrarte en su proyecto Delphi:
src a la ruta de búsqueda de Delphi.??criptLas contribuciones a "CRIPT son altamente alentadas. No dude en enviar problemas, sugerir nuevas funciones o crear solicitudes de extracción para expandir las capacidades y la robustez del motor de secuencias de comandos.
?? Cript se distribuye bajo el? Licencia de cláusula BSD-3. Para obtener más detalles, consulte el archivo LICENSE .
Si busca mejorar el rendimiento computacional, ¿interactúa sin problemas con la existencia? Las bibliotecas, o expanden las características de sus aplicaciones Delphi, Cript proporciona una solución poderosa e integrada para combinar las fortalezas de la programación Delphi y 99.
? Desbloquee nuevas posibilidades con el "CRIPT y eleva su experiencia de desarrollo de Delphi a través de técnicas de programación híbrida.

Hecho con ❤️ en Delphi