Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Comment communiquer avec le compilateur ?
auteur : Comtois
Le compilateur est très docile, si on lui demande gentiment il est capable de répondre à nos questions. On peut par exemple lui demander la liste des champs dans une structure donnée, ou lui demander la liste des fonctions qu'il connait, on obtient ainsi non seulement la liste des fonctions PureBasic mais aussi la liste des fonctions des bibliothèques tierces installées dans le répertoire PureBasic. Mais avant d'interroger le compilateur il faut le démarrer. Pour cela on utilise tout simplement la commande RunProgram() avec les options suivantes :

  • #PB_Program_Hide : Lance le programme en mode invisible.
  • #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).

Compilateur = RunProgram(#PB_Compiler_Home+"Compilers\Pbcompiler.exe", "/STANDBY", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Write|#PB_Program_Hide)
If Compilateur = 0
  MessageRequester("Pas de bol", "Le compilateur ne démarre pas")
  End
EndIf
; Version du compilateur
;
Reponse$ = ReadProgramString(Compilateur)
/STANDBY (Windows) ou --standby (Linux/Mac) : Le compilateur attend une commande sur l'entrée standard (stdin) et répond sur la sortie standard (stdout)


Comment vérifier si le compilateur est prêt ?
auteur : Comtois
Une fois que vous avez démarré le compilateur, vous devez vérifier qu'il est prêt à discuter avec vous.

; Vérifie que le compilateur soit prêt
;
Reponse$ = ReadProgramString(Compilateur)

If StringField(Reponse$, 1, Chr(9)) = "ERROR"
  MessageRequester("", "Erreur: " + StringField(Reponse$, 2, Chr(9)))
  CloseProgram(Compiler)
  End
EndIf 

Comment interroger le compilateur ?
auteur : Comtois
Ok, le compilateur est démarré, il est prêt, alors posons lui une question. Certaines questions ont un paramètre, d'autres non.

Exemple de requête sans paramètre, en réponse Le compilateur renvoie la liste de toutes les structures :

; interroge le compilateur
;
Demande$="STRUCTURELIST"
Parametre$=""
WriteProgramStringN(Compilateur, Demande$+Chr(9)+Parametre$)
Autre exemple de requête avec un paramètre, le compilateur renvoie la liste des champs de la structure indiquée en paramètre :

; interroge le compilateur
;
Demande$="STRUCTURE"
Parametre$="point"
WriteProgramStringN(Compilateur, Demande$+Chr(9)+Parametre$)
Pour connaître la liste des requêtes possibles consultez le fichier CompilerInterface.txt qui se trouve dans le répertoire sdk de PureBasic.


Comment récupérer la réponse du compilateur ?
auteur : Comtois
Il suffit de créer une boucle qui récupère les réponses jusqu'à l'information 'OUTPUT [TAB] COMPLETE'

; Récupère la réponse du compilateur
Repeat
  Reponse$ = ReadProgramString(Compilateur)
  If Reponse$ = "OUTPUT"+Chr(9)+"COMPLETE"
    Break
  EndIf
  Texte$ + Reponse$ + Chr(13)
ForEver
Ensuite il faut terminer l'échange en envoyant la requête 'END'

;Termine l'échange avec le compilateur
WriteProgramStringN(Compilateur, "END")
CloseProgram(Compilateur)
Et on peut enfin afficher le résultat

;Affiche le résultat
MessageRequester("", Texte$)

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2008  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com