[OK] Bug de RunProgram( ??
Publié : sam. 09/juil./2016 14:14
Pour mon usage personnel, j'ai voulu compiler avec un compilateur en ligne de commande NBC (pour robots) un code source (pour robot aussi, mais on s'en fout)...
La syntaxe est la suivante : dans les propriétés de raccourci Windows.
On constate qu'il y a bien deux paramétres : le fichier de sortie ( -O=D:\monexecutablerobot.rxe) et le fichier a compiler (moncodesource.nxc), séparés par des "+". Tout marche trés bien, j'ai bien mon exécutable a la place indiquée
Tout content je décide de tester avec PB... et la
###Error : The user is dead cause of a malfuction in his brain### Bref j'ai cramé trop de neurones, a cause de ca :
C'est l'exemple de la doc de PB pour RunProgram(, avec mon compilateur et ses paramétres comme programme a lancer, comme tout à l'heure dans le raccourci de Windows... Seulement voila, rien ne marche, le fichier rxe (executable pour mon robot) n'est pas créé, le compilateur nbc.exe retourne 1 comme code de sortie (ce qui n'est pas normal).
Par contre, quand on passe "-help" au compilo, il affiche bien son fichier d'aide : et retourne 0 (c'est normal)
Même avec RunProgram(....
Alors j'ai fait un mini prog qui renvoie les paramétres qu'on lui a passés dans un MessageRequester :
Je l'ait compilé et mis dans le même dossier que mon compilo nbc, puis je l'ait testé avec les paramétres que j'avait mis au début ("+ -O=D:\robotest.rxe + struct.nxc "), avec un raccourci Windows, puis avec RunProgram....
Et c'est là que la logique s'arrête, que l'utilisateur plante son cerveau, et que le monde s'effondre
Avec Windows : (extrait du MessageRequester)
---------------------------
Paramétres
---------------------------
+,-O=D:\monexecutablerobot.rxe,+,moncodesource.nxc,,
---------------------------
OK
---------------------------
Et avec RunProgram :
---------------------------
Paramétres
---------------------------
+,-O=D:\monexecutablerobot.rxe,+,moncodesource.nxc,,
---------------------------
OK
---------------------------
C'est les mêmes !!!
Si RunProgram a bien passé les mêmes paramétres que le raccourci Windows au compilateur nbc, comment est-ce possible qu'avec RunProgram, ca n'ait pas fonctionné????
***L'utilisateur JohnJohnsonSHERMAN a planté. Veuillez le redémarrer.***

La syntaxe est la suivante :
Code : Tout sélectionner
"D:\Program Files (x86)\NXT\NBCCompiler\nbc.exe" + -O=D:\monexecutablerobot.rxe + moncodesource.nxc
On constate qu'il y a bien deux paramétres : le fichier de sortie ( -O=D:\monexecutablerobot.rxe) et le fichier a compiler (moncodesource.nxc), séparés par des "+". Tout marche trés bien, j'ai bien mon exécutable a la place indiquée

Tout content je décide de tester avec PB... et la



Code : Tout sélectionner
Compilateur = RunProgram("D:\Program Files (x86)\NXT\NBCCompiler\nbc.exe","+ -O=D:\robotest.rxe + struct.nxc ", "", #PB_Program_Open | #PB_Program_Read);memes params que pour windows
Sortie$ = ""
If Compilateur
While ProgramRunning(Compilateur)
If AvailableProgramOutput(Compilateur)
Sortie$ + ReadProgramString(Compilateur) + Chr(13)
EndIf
Wend
Sortie$ + Chr(13) + Chr(13)
Sortie$ + "Code de retour : " + Str(ProgramExitCode(Compilateur))
CloseProgram(Compilateur) ; Ferme la connection vers le programme
EndIf
MessageRequester("Sortie", Sortie$)
Par contre, quand on passe "-help" au compilo, il affiche bien son fichier d'aide :
Code : Tout sélectionner
RunProgram("D:\Program Files (x86)\NXT\NBCCompiler\nbc.exe","+ -help"
Même avec RunProgram(....
Alors j'ai fait un mini prog qui renvoie les paramétres qu'on lui a passés dans un MessageRequester :
Code : Tout sélectionner
For i=0 To CountProgramParameters()
param$ = param$ + ProgramParameter() + ","
Next
MessageRequester("Paramétres", param$)
Et c'est là que la logique s'arrête, que l'utilisateur plante son cerveau, et que le monde s'effondre


Avec Windows : (extrait du MessageRequester)
---------------------------
Paramétres
---------------------------
+,-O=D:\monexecutablerobot.rxe,+,moncodesource.nxc,,
---------------------------
OK
---------------------------
Et avec RunProgram :
---------------------------
Paramétres
---------------------------
+,-O=D:\monexecutablerobot.rxe,+,moncodesource.nxc,,
---------------------------
OK
---------------------------







C'est les mêmes !!!
Si RunProgram a bien passé les mêmes paramétres que le raccourci Windows au compilateur nbc, comment est-ce possible qu'avec RunProgram, ca n'ait pas fonctionné????
***L'utilisateur JohnJohnsonSHERMAN a planté. Veuillez le redémarrer.***
