
O crívio representa um mecanismo sofisticado de 99 script meticulosamente criado para desenvolvedores experientes? Delphi. Aproveitando o compilador TINYCC compacto, porém altamente versátil, integra perfeitamente a geração dinâmica de código de back -end no ambiente de desenvolvimento Delphi. Com ?? Cript , os desenvolvedores da Delphi podem compilar e executar? Scripts em tempo de execução, diretamente? memória e gerar saída na forma de? Win64 Executíveis (.exe), bibliotecas de link dinâmico (.dll) ou arquivos de objeto (.obj).
.dll , .a e .lib . O crívio emprega o TINYCC , que está estaticamente ligado ao tempo de execução do Delphi, para compilar e executar? código dinamicamente. Tudo crítico? Operações de E/S de tempo de execução-como open , close , read e lseek -estão redirecionadas para implementações nativas da Delphi. Normalmente, o TINYCC exigiria que os arquivos de tempo de execução estivessem disponíveis separadamente; No entanto, em ?? Cript , esses arquivos são armazenados dentro do próprio Delphi executável como recursos compactados, resultando em A? Modelo de E/S virtualizado independente. Quando o TINYCC solicita acesso a arquivos de tempo de execução, um manipulador de E/S personalizado Delphi verifica o arquivo zip incorporado, garantindo assim um ambiente de execução contínuo, eficiente e isolado.
?? funciona como um canal para aproveitar as capacidades do código? 99 na estrutura de desenvolvimento Delphi. Se envolve a otimização de operações específicas para o desempenho aprimorado, interface com pré-existente? Bibliotecas, ou Aumentando o conjunto de recursos de Delphi com os recursos expressivos de?, O crívio fornece um conjunto de ferramentas de desenvolvimento coesivo e sofisticado.
O TCScript é a interface principal para se envolver com as funcionalidades de crívio . Abaixo está uma visão geral de seus componentes principais:
csMEMORY : compilar e executar scripts inteiramente na memória.csLib : gerar arquivos de objeto ( .obj ).csEXE : Gere A? Win64 executável.csDLL : gerar um? Biblioteca de link dinâmico. csCONSOLE : Alvos? Subsistemas de aplicativos de console.csGUI : Alvos? Subsistemas de interface do usuário gráfico. constructor Create() : inicializa uma instância do TCScript .destructor Destroy() :? Libera recursos vinculados à instância do TCScript .procedure SetErrorHandler(const ASender: Pointer; const AHandler: TCScriptErrorEvent) : atribui um manipulador de erros personalizado para gerenciamento de erros.procedure GetErrorHandler(var ASender: Pointer; var AHandler: TCScriptErrorEvent) : Recupera o manipulador de erros atualmente atribuído.function AddLibraryPath(const APath: string): Boolean : registra a? Caminho da biblioteca para o compilador.function AddIncludePath(const APath: string): Boolean : registra um caminho de incluir para localizar arquivos de cabeçalho.function SetOutputType(const AOutputType: TCScriptOutputType): Boolean : especifica o tipo de saída desejado para a compilação de scripts.function CompileString(const ABuffer: string): Boolean : compila uma sequência fornecida? código.function AddFile(const AFilename: string): Boolean : adiciona um? arquivo de origem para a unidade de compilação.function Run(): Boolean : executa o script compilado.function AddLibrary(const AName: string): Boolean : adiciona uma biblioteca externa a ser dinamicamente vinculada durante a execução.procedure AddSymbol(const AName: string; AValue: Pointer) : registra um símbolo no contexto de script.function GetSymbol(const AName: string): Pointer : recupera o endereço de um símbolo registrado.procedure Reset() : Redefine a instância do TCScript , limpando os estados anteriores.function SaveOutputFile(const AFilename: string): Boolean : salva a saída compilada para um especificado? arquivo.O exemplo a seguir ilustra como instanciar o TCScript , adicionar um arquivo para compilação e executar o 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 integrar ?
src ao caminho de pesquisa Delphi.??cript à seção de usos do seu projeto .As contribuições para ?? Cript são altamente encorajadas. Sinta -se à vontade para enviar problemas, sugerir novos recursos ou criar solicitações de puxar para expandir os recursos e a robustez do mecanismo de script.
?? Cript é distribuído sob o? Licença de cláusula BSD-3. Para mais detalhes, consulte o arquivo LICENSE .
Se você procura ⚡ Aumentar o desempenho computacional, interface perfeitamente com a existência? Bibliotecas ou expandir os recursos dos seus aplicativos Delphi ,?
? Desbloqueie novas possibilidades com o crívio e eleva sua experiência de desenvolvimento Delphi por meio de técnicas de programação híbrida.

Feito com ❤️ em Delphi