Je vous propose ce Code pour vous montrer comment Compiler et Exécuter
Facilement un Code puis obtenir le résultat.
Je suis ouvert à toutes amélioration du code, ajout, idée, critique constructive, etc:
Édit: Ajouté: Procédure et exemple CheckCode (Vérifié juste un code, pas de Compilation ni de Résultat).
Édit: Correction d'une erreur qui faussait les informations sur la position de retour des erreurs de lignes.
Édit: Corrections diverses, Ajout de plus de Code dans Code.s
Code : Tout sélectionner
; Créé par Monsieur Dieppedalle David le 13/03/2017.
; Compiler et Exécuter un code puis obtenir le résultat.
; Procédure pour Compiler et Exécuter un code.
Procedure.b CompileAndExecuteCode(CodePourCompilation.s)
Define Compilateur.i = 0
Define Sortie.s = "", Erreur.s = ""
Define AncientCurrentDirectory.s = ""
; Il y a t-il du code ?:
If CodePourCompilation.s <> ""
; Créer un répertoire nommé "Compilation".
CreateDirectory(GetCurrentDirectory() + "Compilation")
; Sauvegarde le chemin actuel de l'application (Où est situé ce code).
AncientCurrentDirectory.s = GetCurrentDirectory()
; Change le chemin de l'application en allant dans le dossier "Compilation" s'il existe.
SetCurrentDirectory(GetCurrentDirectory() + "Compilation")
; Peut-on créer le Fichier "CodeSource.pb" ?:
If CreateFile(1, "CodeSource.pb")
; On écrit le code dans le Fichier "CodeSource.pb".
WriteStringN(1, "DisableDebugger", #PB_Ascii) ; On désactive le debugeur pour pouvoir intercepter les messages d'erreurs.
WriteStringN(1, "", #PB_Ascii)
; Ecrit dans le fichier une chaîne vide.
WriteStringN(1, ~"CreateFile(0, \"ErreurExecution_CodeSource.txt\")", #PB_Ascii)
WriteStringN(1, ~"WriteString(0, \"Pas d'erreur.\")", #PB_Ascii)
WriteStringN(1, "CloseFile(0)", #PB_Ascii)
WriteStringN(1, "", #PB_Ascii)
WriteStringN(1, "Procedure CompileError()", #PB_Ascii) ; Procédure qui s'exécutera si une erreur intervient dans le code.
; Ecrit dans le fichier l'erreur survenue et fermer celui-ci.
WriteStringN(1, ~" CreateFile(0, \"ErreurExecution_CodeSource.txt\")", #PB_Ascii)
WriteStringN(1, ~" WriteString(0, \"Erreur: Ligne \" + Str(ErrorLine() - 14) + \" - \" + ErrorMessage() + \".\")", #PB_Ascii)
WriteStringN(1, " CloseFile(0)", #PB_Ascii)
WriteStringN(1, "EndProcedure", #PB_Ascii)
WriteStringN(1, "", #PB_Ascii)
WriteStringN(1, "OnErrorCall(@CompileError())", #PB_Ascii) ; Activation de la gestion des erreurs, Si une erreur intervient dans le code, la procédure CompileError() sera appelée.
WriteStringN(1, "", #PB_Ascii)
WriteString(1, CodePourCompilation.s, #PB_Ascii) ; Ecrit le code.
CloseFile(1) ; Ferme le fichier.
; Lance le compilateur avec comme premier argument l'enplacement du compilateur PB.
; Le segond est le nom du fichier + un Flag qui active la gestion des erreurs pour OnError.
; Le troixième est l'emplacement de travail (A quel endroit se situe le fichier "CodeSource.pb").
; Le dernier:
; #PB_Program_Open = Ouvre des canaux de communication entre le programme lancé et le programme PureBasic.
; #PB_Program_Read = Lecture possible sur la sortie standard (stdout).
; #PB_Program_Write = Ecriture possible sur l'entrée standard (stdin).
; #PB_Program_Error = Lecture possible sur la sortie d'erreur (stderr).
; #PB_Program_Hide = Lance le programme en mode invisible (Ici le compilateur).
; Renvoie une valeur non nulle si le programme a été lancé avec succès, zéro sinon.
Compilateur = RunProgram(#PB_Compiler_Home + "/Compilers/pbcompiler", "CodeSource.pb /LINENUMBERING", GetCurrentDirectory(), #PB_Program_Open | #PB_Program_Read | #PB_Program_Write | #PB_Program_Error | #PB_Program_Hide)
Else
MessageRequester("Erreur lors de la création du fichier du code...", " Une erreur est survenue, Impossible d'écrire le code source !", 16)
ProcedureReturn 0 ; Retourne 0 pour dire que l'opération c'est mal passée.
EndIf
; Le Compilateur a t-il été lancé ?:
If Compilateur
; Boucle tant que le Programme tourne (Ici le compilateur).
While ProgramRunning(Compilateur)
; S'il y a des Données à lire.
If AvailableProgramOutput(Compilateur)
; Lit le texte provenant de la sortie standard (stdout) du programme (Ici le compilateur).
Sortie.s = ReadProgramString(Compilateur)
; Si on trouve "Line", c'est qu'il y a une erreur.
If FindString(Sortie.s, "Line")
Erreur.s = Sortie.s
; Traduction des messages d'erreurs en Français (Liste non Exhaustive):
Erreur.s = ReplaceString(Erreur.s, "Error: Line", "Erreur: Ligne", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "is Not a valid operator", "n'est pas un opérateur valide", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Not a valid Decimal number", "Ceci n'est pas un nombre décimal valide", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Syntax error", "Erreur de syntaxe", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Bad parameter type: a string is expected", "Type de paramètre incorrect: une chaîne est attendue", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Bad parameter type, number expected instead of string", "Type de paramètre incorrect: un nombre est attendu au lieu d'une chaîne", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, ~"Literal string Not terminated (\"missing\")", "Une chaîne n'est pas terminée: il manque un guillemet", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "A Variable can't be named the same as a keyword", "Une Variable ne peut pas être nommée comme un mot-clé", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Comparisons (=, <, >, =< And >=) are only supported With keywords like If, While, Until Or within Bool", "Les comparaisons (=, <,>, = <And> =) ne sont prises en charge qu'avec des mots clés comme: If, While, Until ou Bool", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Division by 0 forbidden", "Division par 0 interdite", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Numerical overflow: too many digits", "Débordement numérique: trop de chiffres", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "is Not a function, Array, List, Map Or Macro", "Cette expression est inconnue, ce n'est ni: Une Fonction, Un Tableau, Une Liste, Une Map ou une Macro", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Can't mix strings with numerical values.", "Impossible de mélanger des chaînes avec des valeurs numériques.", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Structure Not found", "Structure introuvable", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "The Array dimensions value needs To be between 1 And 255 For", "Nombre de dimensions du Tableau non valide, Le nombre de dimensions du tableau doit être compris entre 1 et 255 pour", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Garbage at the End of the line", "Erreur à la fin de la ligne", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "A string expression is expected ('number' Not allowed)", "Une chaîne est attendue, Nombre non autorisé.", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Constant Not found", "Constante non trouvé", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "With 'EnableExplicit', variables have To be declared", "Variable non déclarée", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Array type is different than earlier", "L'Extension d'une Variable de Type Tableau n'est pas la même que lors de sa déclaration", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Variable already declared With another type", "Cette Variable est déjà déclarée avec une Extension différente", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Negative values are Not allowed", "Les valeurs négatives ne sont pas autorisées", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "A field in a 'Structure' needs an explicit declared type", "Un champ dans une 'Structure' a besoin d'un type explicitement déclaré.", #PB_String_NoCase)
; Extraction du numéro de la ligne ou se situe l'érreur.
If FindString(Erreur.s, "Erreur: Ligne")
LigneErreur.i = Val(Mid(Erreur.s, 15, FindString(Erreur.s, "-") - FindString(Erreur.s, "Erreur: Ligne")))
EndIf
; Remplacement du numéro de la ligne d'érreur du Code Source "CodeSource.pb" par le numéro de la ligne d'érreur du Code "Code.s"
; car le fichier contient d'autres lignes de Code que le "Code.s", ne prends en compte que le Code "Code.s".
Erreur.s = ReplaceString(Erreur.s, "Erreur: Ligne " + Str(LigneErreur.i), "Erreur: Ligne " + Str(LigneErreur.i - 14))
; Création d'un fichier ou serra inscrit le méssage d'érreur de la Compilation.
If CreateFile(1, "ErreurCompilation_CodeSource.txt")
WriteString(1, Erreur.s, #PB_Ascii)
CloseFile(1)
EndIf
; Restaure le chemin de l'application.
SetCurrentDirectory(AncientCurrentDirectory.s)
; Retourne 0 pour dire que la Compilation s'est mal passée.
ProcedureReturn 0
Else
If CreateFile(1, "ErreurCompilation_CodeSource.txt")
WriteString(1, "Pas d'erreur.", #PB_Ascii)
CloseFile(1)
EndIf
EndIf
EndIf ; Plus de donnée à lire.
Wend ; Le Programme a terminé (Ici le compilateur).
; Renvoie le code de retour du programme (0 = Ok, 1 = Erreur) quand il c'est terminé (Ici le compilateur).
ExitCode = ProgramExitCode(Compilateur)
; Ferme la connection vers le programme (Ici le compilateur).
CloseProgram(Compilateur)
; La Compilation s'est-elle bien passée ?:
If Bool(Not ExitCode) ; Not, inversion de valeur, 0 = 1 et 1 = 0. 0 = pas d'erreur, 1 = erreurs.
; Restaure le chemin de l'application.
SetCurrentDirectory(AncientCurrentDirectory.s)
; Attends un peu pour laisser le temps à la Procedure CompileError() d'écrire le résultat dans
; le fichier si une erreur survient l'or de l'exécution du Code source "CodeSource.pb".
Delay(50)
ProcedureReturn 1 ; Retourne 1 pour dire que l'opération s'est bien passée.
Else
; Restaure le chemin de l'application.
SetCurrentDirectory(AncientCurrentDirectory.s)
ProcedureReturn 0 ; Retourne 0 pour dire que l'opération s'est mal passée.
EndIf
Else
; Restaure le chemin de l'application.
SetCurrentDirectory(AncientCurrentDirectory.s)
MessageRequester("Erreur lors de la compilation du code...", " Une erreur est survenue, Impossible de lancer le compilateur !", 16)
ProcedureReturn 0 ; Retourne 0 pour dire que l'opération s'est mal passée.
EndIf
EndIf
EndProcedure
; Procédure pour Verifier un code.
Procedure.b CheckCode(CodePourCompilation.s)
Define Compilateur.i = 0
Define Sortie.s = "", Erreur.s = ""
; Il y a t-il du code ?:
If CodePourCompilation.s <> ""
; Créer un répertoire nommé "Compilation".
CreateDirectory(GetCurrentDirectory() + "Compilation")
; Sauvegarde le chemin actuel de l'application (Où est situé ce code).
AncientCurrentDirectory.s = GetCurrentDirectory()
; Change le chemin de l'application en allant dans le dossier "Compilation" s'il existe.
SetCurrentDirectory(GetCurrentDirectory() + "Compilation")
; Peut-on créer le Fichier "CodeSource.pb" ?:
If CreateFile(1, "CodeSource.pb")
WriteString(1, CodePourCompilation.s) ; Ecrit le code.
CloseFile(1) ; Ferme le fichier.
; Lance le compilateur avec comme premier argument l'enplacement du compilateur PB.
; Le segond est le nom du fichier + un Flag qui active la gestion des erreurs pour OnError.
; Le troixième est l'emplacement de travail (A quel endroit se situe le fichier "CodeSource.pb").
; Le dernier:
; #PB_Program_Open = Ouvre des canaux de communication entre le programme lancé et le programme PureBasic.
; #PB_Program_Read = Lecture possible sur la sortie standard (stdout).
; #PB_Program_Write = Ecriture possible sur l'entrée standard (stdin).
; #PB_Program_Error = Lecture possible sur la sortie d'erreur (stderr).
; #PB_Program_Hide = Lance le programme en mode invisible (Ici le compilateur).
; Renvoie une valeur non nulle si le programme a été lancé avec succès, zéro sinon.
Compilateur = RunProgram(#PB_Compiler_Home + "/Compilers/pbcompiler", "CodeSource.pb /CHECK", GetCurrentDirectory(), #PB_Program_Open | #PB_Program_Read | #PB_Program_Write | #PB_Program_Error | #PB_Program_Hide)
Else
MessageRequester("Erreur l'or de la création du fichier du code...", " Une erreur est survenue, Impossible d'écrire le code source !", 16)
ProcedureReturn 0 ; Retourne 0 pour dire que l'opération c'est mal passée.
EndIf
; Le Compilateur a t-il été lancé ?:
If Compilateur
; Boucle tant que le Programme tourne (Ici le compilateur).
While ProgramRunning(Compilateur)
; S'il y a des Données à lire.
If AvailableProgramOutput(Compilateur)
; Lit le texte provenant de la sortie standard (stdout) du programme (Ici le compilateur).
Sortie.s = ReadProgramString(Compilateur)
; Si on trouve "Line", c'est qu'il y a une erreur.
If FindString(Sortie.s, "Line")
Erreur.s = Sortie.s
; Traduction des messages d'erreurs en Français (Liste non Exhaustive):
Erreur.s = ReplaceString(Erreur.s, "Error: Line", "Erreur: Ligne", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "is Not a valid operator", "n'est pas un opérateur valide", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Not a valid Decimal number", "Ceci n'est pas un nombre décimal valide", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Syntax error", "Erreur de syntaxe", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Bad parameter type: a string is expected", "Type de paramètre incorrect: une chaîne est attendue", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Bad parameter type, number expected instead of string", "Type de paramètre incorrect: un nombre est attendu au lieu d'une chaîne", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, ~"Literal string Not terminated (\"missing\")", "Une chaîne n'est pas terminée: il manque un guillemet", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "A Variable can't be named the same as a keyword", "Une Variable ne peut pas être nommée comme un mot-clé", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Comparisons (=, <, >, =< And >=) are only supported With keywords like If, While, Until Or within Bool", "Les comparaisons (=, <,>, = <And> =) ne sont prises en charge qu'avec des mots clés comme: If, While, Until ou Bool", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Division by 0 forbidden", "Division par 0 interdite", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Numerical overflow: too many digits", "Débordement numérique: trop de chiffres", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "is Not a function, Array, List, Map Or Macro", "Cette expression est inconnue, ce n'est ni: Une Fonction, Un Tableau, Une Liste, Une Map ou une Macro", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Can't mix strings with numerical values.", "Impossible de mélanger des chaînes avec des valeurs numériques.", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Structure Not found", "Structure introuvable", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "The Array dimensions value needs To be between 1 And 255 For", "Nombre de dimensions du Tableau non valide, Le nombre de dimensions du tableau doit être compris entre 1 et 255 pour", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Garbage at the End of the line", "Erreur à la fin de la ligne", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "A string expression is expected ('number' Not allowed)", "Une chaîne est attendue, Nombre non autorisé.", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Constant Not found", "Constante non trouvé", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "With 'EnableExplicit', variables have To be declared", "Variable non déclarée", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Array type is different than earlier", "L'Extension d'une Variable de Type Tableau n'est pas la même que lors de sa déclaration", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Variable already declared With another type", "Cette Variable est déjà déclarée avec une Extension différente", #PB_String_NoCase)
Erreur.s = ReplaceString(Erreur.s, "Negative values are Not allowed", "Les valeurs négatives ne sont pas autorisées", #PB_String_NoCase)
; Création d'un fichier ou serra inscrit le méssage d'érreur de la Compilation.
If CreateFile(1, "ErreurVerification_CodeSource.txt")
WriteString(1, Erreur.s)
CloseFile(1)
EndIf
; Restaure le chemin de l'application.
SetCurrentDirectory(AncientCurrentDirectory.s)
; Retourne 0 pour dire que la Compilation s'est mal passée.
ProcedureReturn 0
Else
If CreateFile(1, "ErreurVerification_CodeSource.txt")
WriteString(1, "Pas d'erreur.")
CloseFile(1)
EndIf
EndIf
EndIf ; Plus de donnée à lire.
Wend ; Le Programme a terminé (Ici le compilateur).
; Renvoie le code de retour du programme (0 = Ok, 1 = Erreur) quand il c'est terminé (Ici le compilateur).
ExitCode = ProgramExitCode(Compilateur)
; Ferme la connection vers le programme (Ici le compilateur).
CloseProgram(Compilateur)
; La Compilation s'est-elle bien passée ?:
If Bool(Not ExitCode) ; Not, inversion de valeur, 0 = 1 et 1 = 0. 0 = pas d'erreur, 1 = erreurs.
; Restaure le chemin de l'application.
SetCurrentDirectory(AncientCurrentDirectory.s)
ProcedureReturn 1 ; Retourne 1 pour dire que l'opération s'est bien passée.
Else
; Restaure le chemin de l'application.
SetCurrentDirectory(AncientCurrentDirectory.s)
ProcedureReturn 0 ; Retourne 0 pour dire que l'opération s'est mal passée.
EndIf
Else
; Restaure le chemin de l'application.
SetCurrentDirectory(AncientCurrentDirectory.s)
MessageRequester("Erreur lors de la compilation du code...", " Une erreur est survenue, Impossible de lancer le compilateur !", 16)
ProcedureReturn 0 ; Retourne 0 pour dire que l'opération s'est mal passée.
EndIf
EndIf
EndProcedure
; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Exemple d'utilisation CompileAndExecuteCode():
; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Déclaration des Variables.
Define NomFichier_Resultat_CodeSource.s = "", Code.s = "", MessageErreur.s = "", ErreurCode.s = "", Resultat.s = ""
; Le Nom du Fichier ou le Résultat de la Compilation sera écrit.
NomFichier_Resultat_CodeSource.s = "Resultat_CodeSource.txt"
; Code Source, c'est grace à ce Code que le Résultat de la Compilation sera inscrit dans le Fichier "NomFichier_Resultat_CodeSource.s".
; Une Structure.
Code.s + "Structure Yz" + Chr(13) + Chr(10)
Code.s + " Asd.a" + Chr(13) + Chr(10)
Code.s + " Dfg.s" + Chr(13) + Chr(10)
Code.s + " Hjk$" + Chr(13) + Chr(10)
Code.s + " *Iop" + Chr(13) + Chr(10)
Code.s + " List Klm.i()" + Chr(13) + Chr(10)
Code.s + " Array Yui.d(10, 20)" + Chr(13) + Chr(10)
Code.s + " Map Rty.f(10000)" + Chr(13) + Chr(10)
Code.s + "EndStructure" + Chr(13) + Chr(10)
; Une Ligne vide.
Code.s + Chr(13) + Chr(10)
; Les Variables
Code.s + "Abc.a = 155" + Chr(13) + Chr(10)
Code.s + "Def.d = 123456789.123456789" + Chr(13) + Chr(10)
Code.s + ~"#Ghi = \"Blablabla\"" + Chr(13) + Chr(10)
Code.s + "#Jkl = 147.258" + Chr(13) + Chr(10)
Code.s + "*Mno = 456" + Chr(13) + Chr(10)
Code.s + ~"Pqr$ = \"Blobloblo\"" + Chr(13) + Chr(10)
Code.s + "NewList Stu.w()" + Chr(13) + Chr(10)
Code.s + "Dim Vwx.Yz(1, 2, 3, 4)" + Chr(13) + Chr(10)
Code.s + ~"NewMap Ghi.u(5000)" + Chr(13) + Chr(10)
; Une Ligne vide.
Code.s + Chr(13) + Chr(10)
; Création d'un fichier texte et écriture du résultat dedans.
Code.s + ~"If CreateFile(1, \"" + NomFichier_Resultat_CodeSource.s + ~"\")" + Chr(13) + Chr(10)
Code.s + ~" WriteString(1, ReplaceString(StrD(Abc.a + Def.d * #Jkl / Vwx.Yz(1, 2, 3, 4)\\Yui.d(10, 20)), \"Infinity\", \"Infinité\", #PB_String_NoCase), #PB_Ascii)" + Chr(13) + Chr(10)
Code.s + " CloseFile(1)" + Chr(13) + Chr(10)
Code.s + "EndIf"
; Peut-on Compiler le Code ?:
If CompileAndExecuteCode(Code.s)
; Lecture du message d'erreur survenue lors de l'exécution du Code.
If ReadFile(0, "Compilation\ErreurExecution_CodeSource.txt") ; Si le fichier peut être lu, on continue...
; Récupération de la Ligne de Code dans le Fichier.
ErreurCode.s = ReadString(0, #PB_Ascii)
; S'il y a un message d'erreur, l'affiche dans une boîte de dialogue.
If ErreurCode.s <> "Pas d'erreur."
MessageRequester("Erreur...", " Erreur lors de l'Exécution du code..." + Chr(13) + " " + ErreurCode.s, 16) ; Affichage du résultat.
Else
; Lecture du Résultat du code.
If ReadFile(1, "Compilation\Resultat_CodeSource.txt") ; Si le fichier peut être lu, on continue...
Resultat.s = ReadString(1, #PB_Ascii)
MessageRequester("Information sur le Code...", " Compilation et Exécution terminées !" + Chr(13) + " Résultat: " + Resultat.s, 64) ; Affichage du résultat.
CloseFile(1) ; Ferme le fichier.
EndIf
EndIf
CloseFile(0) ; Ferme le fichier.
EndIf
Else ; Impossible de Compiler le Code.
; Lecture du message d'erreur survenue lors de la Compilation du Code.
If ReadFile(0, "Compilation\ErreurCompilation_CodeSource.txt") ; Si le fichier peut être lu, on continue...
MessageErreur.s = ReadString(0, #PB_Ascii)
; Affiche le message dans une boîte de dialogue.
MessageRequester("Erreur...", " Erreur lors de la Compilation du Code..." + Chr(13) + " " + MessageErreur.s, 16) ; Affichage du résultat.
CloseFile(0) ; Ferme le fichier.
EndIf
EndIf
; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Exemple d'utilisation CheckCode():
; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Déclaration des Variables.
Define Code.s = ""
Code.s = ~"MessageRequester(\"Information...\", \" Cette boite ne s'affichera pas !\", 64)"
; Le Code est-il correct ?:
If CheckCode(Code.s)
MessageRequester("Information sur le Code...", " Le code a été vérifié, pas d'erreurs.", 64) ; Affichage du résultat.
Else ; Le Code comporte des Erreurs.
; Lecture du message d'erreur survenue lors de la Vérification du Code.
If ReadFile(0, "Compilation\ErreurVerification_CodeSource.txt") ; Si le fichier peut être lu, on continue...
; Affiche le message dans une boîte de dialogue.
MessageRequester("Erreur...", " Erreur lors de la vérification du Code..." + Chr(13) + " " + ReadString(0, #PB_Ascii), 16) ; Affichage du résultat.
CloseFile(0) ; Ferme le fichier.
EndIf
EndIf