
?? Cript représente un moteur sophistiqué? 99 Scripting Mether Craftly Craft for expérimenté? Delphi Developers. Tirant l'extraction du compilateur TinyCC compact mais très polyvalent, ?? Cript intègre de manière transparente la génération de code backend dynamique dans l'environnement de développement de Delphi. Avec ?? Cript , les développeurs Delphi peuvent compiler et exécuter? scripts lors de l'exécution, directement? mémoire et générer de la sortie sous la forme de? Les exécutables Win64 (.exe), les bibliothèques dynamiques-link (.dll) ou les fichiers d'objet (.OBJ).
.dll , .a et .lib . ?? Cript utilise TINYCC , qui est lié statiquement à l'exécution de Delphi, pour compiler et exécuter? code dynamiquement. Tous critiques? Les opérations d'E / S d'exécution - telles que open , close , read et lseek - sont réinstallées sur les implémentations delphi-natives. En règle générale, TINYCC nécessiterait des fichiers d'exécution pour être disponibles séparément; Cependant, dans ? Modèle d'E / S virtualisé autonome. Lorsque TINYCC demande l'accès aux fichiers d'exécution, un gestionnaire d'E / S de Delphi personnalisé vérifie l'archive zip intégrée, garantissant ainsi un environnement d'exécution transparente, efficace et isolé.
?? Cript fonctionne comme un conduit pour exploiter les capacités du code? 99 dans le cadre de développement de Delphi. Si cela implique d'optimiser des opérations particulières pour des performances améliorées, interfaçantes avec le préexistant? Bibliothèques, ou augmenter le jeu de fonctionnalités de Delphi avec les capacités expressives de ?, ?? Cript fournit un ensemble d'outils de développement cohésif et sophistiqué.
TCScript est l'interface principale pour s'engager avec les fonctionnalités Cript . Vous trouverez ci-dessous un aperçu de ses composants principaux:
csMEMORY : compiler et exécuter des scripts entièrement en mémoire.csLib : générer des fichiers d'objets ( .obj ).csEXE : Générer un? Executable Win64.csDLL : Générez un? bibliothèque dynamique-link. csCONSOLE : cibles? sous-systèmes d'application de console.csGUI : cibles? Sous-systèmes d'interface utilisateur graphique. constructor Create() : initialise une instance de TCScript .destructor Destroy() :? Libère des ressources liées à l'instance TCScript .procedure SetErrorHandler(const ASender: Pointer; const AHandler: TCScriptErrorEvent) : attribue un gestionnaire d'erreur personnalisé pour la gestion des erreurs.procedure GetErrorHandler(var ASender: Pointer; var AHandler: TCScriptErrorEvent) : récupère le gestionnaire d'erreur actuellement attribué.function AddLibraryPath(const APath: string): Boolean : registre a? Chemin de bibliothèque pour le compilateur.function AddIncludePath(const APath: string): Boolean : enregistre un chemin d'inclusion pour localiser les fichiers d'en-tête.function SetOutputType(const AOutputType: TCScriptOutputType): Boolean : spécifie le type de sortie souhaité pour la compilation de script.function CompileString(const ABuffer: string): Boolean : compile une chaîne fournie? code.function AddFile(const AFilename: string): Boolean : ajoute un? Fichier source à l'unité de compilation.function Run(): Boolean : exécute le script compilé.function AddLibrary(const AName: string): Boolean : ajoute une bibliothèque externe à lier dynamiquement pendant l'exécution.procedure AddSymbol(const AName: string; AValue: Pointer) : enregistre un symbole au contexte de script.function GetSymbol(const AName: string): Pointer : récupère l'adresse d'un symbole enregistré.procedure Reset() : réinitialise l'instance TCScript , effacer les états précédents.function SaveOutputFile(const AFilename: string): Boolean : enregistre la sortie compilée à un spécifié? déposer.L'exemple suivant illustre comment instancier TCScript , ajouter un fichier pour la compilation et exécuter le script résultant:
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 ;Pour intégrer ?? Cript dans votre projet Delphi:
src au chemin de recherche Delphi.??criptLes contributions à ?? Cript sont très encouragées. N'hésitez pas à soumettre des problèmes, à suggérer de nouvelles fonctionnalités ou à créer des demandes de traction pour étendre les capacités et la robustesse du moteur de script.
?? Cript est distribué sous le? Licence de clause BSD-3. Pour plus de détails, reportez-vous au fichier LICENSE .
Que vous cherchiez à améliorer les performances de calcul, interface de manière transparente avec existant? Bibliothèques, ou élargir les fonctionnalités de vos applications Delphi, ?? Cript fournit une solution puissante et intégrée pour combiner les forces de la programmation Delphi et? 99.
? Déverrouillez de nouvelles possibilités avec ?

Fait avec ❤️ à Delphi