Compatibilite de fichiers

cs_liloupucienne Messages postés 11 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 29 mars 2004 - 22 août 2003 à 12:15
cs_liloupucienne Messages postés 11 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 29 mars 2004 - 22 août 2003 à 15:42
Salut je voudrai lancer un exe dans mon pg et cet exe doit recevoir des parametres quelqu'un sait comment je peux faire ??
je precise un peu:
il s'agit de transformer des fichiers textes cree sous windows pour que mon exec qui tourne sous unix puisse les traiter (en fait c'est pour les rendre compatible) le nom du pg que j'utilise pour faire cela est fromdos et il doit recevoir en parametre le fichier a transformer puis mon programme fait le traitement
de plus je dois pouvoir le faire plusieurs fois car je traite plusieurs fichiers et donc avant de faire quoi que ce soit je dois etre sur que mes fichiers seront lisible correctement (notament avec un marqueur de fin de ligne qui sera reconnu)

6 réponses

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
22 août 2003 à 12:32
En Win32, il y a CreateProcess() mais pour une compatibilité Unix/Win regarde du côté de system() ou exec().

Kaid - kaid.fr.st
0
cs_liloupucienne Messages postés 11 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 29 mars 2004
22 août 2003 à 14:12
j' ai deja vu ces commandes mais comment je peux lui passer les arguments necessaire qui d'ailleurs se trouve dans un vector
est ce que je peux faire qqch du type:
for (int i=0; i<vec.size();i++)
system("nompg vec[i]");
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
22 août 2003 à 15:07
Il faut tester mais ce que tu veux faire devrait marcher. Mais si tu veux passer tous les éléments du vecteur comme paramètres à ton programme tu ne peux pas faire comme ca. Utilise une string dans laquelle tu mets le nom du programme puis tous les paramètres provenants du vecteur (sans oublier les espaces pour les séparer).

Sinon il est peut-être plus rapide d'utiliser execv().


// Ton tableau de paramètres
std::vector<std::string> tabParam;

// Le tableau que l'on va passer à execv
const char** tabParamExecv=new char* [(tabParam.size() + 1) * sizeof(const char*)];

// Recopie des valeurs
int i=0;
for(std::vector<std::string>::iterator it=tabParam.begin();it!=tabParam.end();it++)
tabParamExecv[i++]=(*it).c_str();

// Ajout du NULL qui détermine la fin du tableau
tabParamExecv[i]=NULL;

// Appel de execv
execv(STR_CMDNAME, tabParamExecv);



Code non testé donc pas forcément juste.

Kaid - kaid.fr.st
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
22 août 2003 à 15:08
J'ai oublié le delete du tableau tabParamExecv.

Kaid - kaid.fr.st
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
22 août 2003 à 15:23
J'ai déja eu l'occasion (sauf que la source est introuvable dans mon fouilli) d'utiliser system() et comme l'a dit Kaid, utilise un tableau contenant le nom de l'exe,et le paramètre.
Un exemple avec Bloc note :

char ordre[25];
strcpy(ordre,"Notepad");
strcat(ordre," readme.txt");//attention a ne pas oublier l'espace de readme.txt
system(ordre);

et ça marche du tonner. Il te reste à adapter pour les arguments de ton tableau mais je te fais confiance...
a+
0
cs_liloupucienne Messages postés 11 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 29 mars 2004
22 août 2003 à 15:42
Merci à tous, je test et je vous tiens au courant ;-)
0
Rejoignez-nous