Page 1 sur 2
RunProgram() et ligne de commande
Publié : mar. 09/nov./2004 13:05
par Thyphoon
J'ai besoin d'appeler un programmer exterrieur et de récupérer son resultat lorsque je tape la commande dans une fenêtre ligne de command ça fonctionne super
c:\mame32.exe -ll >fichier.txt
mais ça ne fonctionne pas lorsque je passe par le programme suivant
Code : Tout sélectionner
;pour connaitre le chemin de l'application
Procedure.s ApplicationDir()
appdir$ = Space(255)
GetCurrentDirectory_(255, @appdir$)
If Right(appdir$, 1) <> "\" ; si l'adresse ne finit pas par "\"
appdir$ = appdir$ + "\" ; on rajoute le "\"
EndIf
ProcedureReturn appdir$
EndProcedure
RunProgram(ApplicationDir()+"Mame32.exe", "-ll >fichier.txt", "" ,1)
If ReadFile(0, "fichier.txt")
First$ = Trim(ReadString())
Debug First$
CloseFile(0)
Else
Debug ("Fichier pas Trouver")
EndIf
une idée ?
Merci d'avance
Publié : mar. 09/nov./2004 13:29
par Chris
Tu l'as enregistré dans un dossier, ton code, ou bien tu l'as lancé directement?
Parce que si il n'est pas enregistré, le dossier de l'application est le dossier "\PureBasic\Compiler".
Publié : mar. 09/nov./2004 13:32
par Thyphoon
oui oui il est bien enregistré !
apres différent test j'ai l'impression que c'est la redirection que Purebasic ne supporte pas (>fichier.txt) car sinon ça fonctionne...
Pourquoi ne peux t'on pas rediriger vers un fichier alors que ça marche dans une ligne de commande ?
Publié : mar. 09/nov./2004 13:40
par Chris
Question bête, parce que je n'ai pas Mame32, (je ne sais même pas ce que c'est, d'ailleurs

), ton >fichier.txt , tu as essayé de le mettre dans le champ du repertoire par défaut, plutôt que dans celui des paramètres?
Je sais, c'est vraiment une idée c..., mais bon!

Publié : mar. 09/nov./2004 13:45
par Thyphoon
je viens d'essayer ce que tu m'as dit mais ça ne change rien
Mame est un emulateur ...Mais bon en gros
c'est le même principe que de faire un DIR >fichier.txt
au lieu de marqué le contenur du repertoire dans la console tout s'ecrit dans un fichier... et c'est ce que je veux faire avec mame ! je veut récupérer la reponse du programme dans le fichier.txt mais je n'y arrive pas ...

Publié : mar. 09/nov./2004 14:17
par Anonyme2
essaye le code avec 2 chr(34) ajouté dans le runprogram()
Mais peut-être qu'il faut mettre un répertoire non vide en 3eme paramètre, c'est souvent la galère ces commandes
Code : Tout sélectionner
;pour connaitre le chemin de l'application
Procedure.s ApplicationDir()
appdir$ = Space(255)
GetCurrentDirectory_(255, @appdir$)
If Right(appdir$, 1) <> "\" ; si l'adresse ne finit pas par "\"
appdir$ = appdir$ + "\" ; on rajoute le "\"
EndIf
ProcedureReturn appdir$
EndProcedure
RunProgram(ApplicationDir()+"Mame32.exe", Chr(34) +"-ll >fichier.txt"+Chr(34), "" ,1)
If ReadFile(0, "fichier.txt")
First$ = Trim(ReadString())
Debug First$
CloseFile(0)
Else
Debug ("Fichier pas Trouver")
EndIf
Publié : mar. 09/nov./2004 14:24
par Thyphoon
@Denis: Helas ça ne fonctionne toujours pas..
En vérité les paramettres passe bien
le problème c'est le >fichier.txt qui pose problème sinon la commande fonctionne ... si ça se trouve le ">" c'est quelques chose propre a la console ...
Si quelqu'un a une autre idée ...
Publié : mar. 09/nov./2004 14:27
par Chris
Oui, tu fais un fichier .bat, et tu le lances avec RunProgram().
J'ai testé, ça fonctionne.
C'est un peu barbare comme méthode, mais on fait ce qu'on peut

Publié : mar. 09/nov./2004 14:30
par Thyphoon
@chris

hi hi oui j'y avait pensé c'est pas une mauvaise idée ... Sauf que j'ai plein de paramètre différent a passer ...et que ça serait plus facile de le gérer directement dans le programme !
Donc si quelqu'un a une autre idée ...

Publié : mar. 09/nov./2004 14:41
par gansta93
Le problème vien de là.
25 Octobre 2004 : Version 3.92
(...)
- Modifié: Le répertoire courant de l'application n'est jamais changé par les commande PureBasic.
Auparavant, le répertoire contenant l'executable était considéré comme le répertoire courant.
Tu devrais faire un GetPathPart() du nom de ton exe pour avoir le répertoir d'exécution du programme.
Publié : mar. 09/nov./2004 15:03
par Chris
Je ne vois pas le rapport!
1- Le répertoire n'est pas récupéré par une commande PureBasic, mais par l'Api. (GetCurrentDirectory_(255, @appdir$))
2- Le chemin du fichier est donné par l'executable, (Mame32) qui crée le fichier.
Si aucun chemin n'est indiqué, il prends comme chemin par defaut celui dans lequel il est lancé.
Il suffit de faire un fichier .bat avec une commande "Pause" pour le constater.
C'est au niveau de RunProgram() qu'il y a un truc qui cloche.
Publié : mar. 09/nov./2004 15:06
par Thyphoon
non, le repertoire est bon ..comme je le disais ...avec certain paramètre ça fonctionne c'est juste lorsque je veux rediriger la sortie du programme dans un fichier avec la commande ">"
Publié : mar. 09/nov./2004 16:57
par Anonyme2
Je pense qu'il s'agit juste d'un problème de paramètre transmis par la commande RunProgram
J'aimerais bien faire des essais mais je n'ai pas Mame.
Essaye ceci
Code : Tout sélectionner
ShellExecute_(0, "open", ApplicationDir()+"Mame32.exe", "-ll >fichier.txt", ApplicationDir(), #SW_HIDE)
ou
Code : Tout sélectionner
ShellExecute_(0, "open", ApplicationDir()+"Mame32.exe", Chr(34) +"-ll >fichier.txt"+Chr(34), ApplicationDir(), #SW_HIDE)
Tu pourrais aussi essayer ceci
Code : Tout sélectionner
ShellExecute_(0, "open", chr(34)+ApplicationDir()+"Mame32.exe"+chr(34), "-ll >fichier.txt", ApplicationDir(), #SW_HIDE)
Et aussi
Code : Tout sélectionner
Fichier.s = Space(255)
GetModuleFileName_(0, @Fichier, 255)
Dossier.s = GetPathPart(Fichier)
pour récupérer le nom du dossier ou est l'exe.
Mame donne-t-il des codes d'erreurs ?
Publié : mar. 09/nov./2004 17:21
par Thyphoon
@Merci Denis pour tout le mal que tu te donne ... helas ça ne fonctionne pas du tout!
Avec la commande Runprogram :
Le chemin est bon car si je lance mame32 sans paramètre (sans le -ll >fichier.txt) la GUI se lance bien ...mais des que j'utilise >fichier.txt
Avec la commande ShellExecute j'ai rien réussi a avoir

( mais c'est peut être la bonne voix !
Mame tu peux le trouver ici :
http://www.emu-france.com/download.php?idFile=2912
et si tu veux une roms pour l'essayer
si tu execute Mame32.exe tu a l'emulateur qui se lance
si tu met des paramètre tel que
-ll ou -lx ça donne une liste de jeu emuler ...je veux récupérer cette liste dans un fichier d'ou le >fichier.txt
Publié : mar. 09/nov./2004 17:38
par Anonyme2
Je ne sais pas ce que c'est une roms
