RunProgram() et ligne de commande

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

RunProgram() et ligne de commande

Message 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
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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".
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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 ?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Question bête, parce que je n'ai pas Mame32, (je ne sais même pas ce que c'est, d'ailleurs :lol: ), 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! :roll:
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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 ... :( :cry:
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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 

Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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 ...
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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 :lol:
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

@chris :lol: 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 ... :P
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message 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.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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 ">"
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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 ?
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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 :o( 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
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Thyphoon a écrit : Mame tu peux le trouver ici :
http://www.emu-france.com/download.php?idFile=2912
et si tu veux une roms pour l'essayer
Je ne sais pas ce que c'est une roms :roll:
Répondre