ssmint
Messages postés43Date d'inscriptionmercredi 30 novembre 2005StatutMembreDernière intervention 5 décembre 2008
-
31 août 2006 à 12:28
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
6 sept. 2006 à 22:45
Bonjour à tous,
mon petit problème du jour, c'est de pouvoir utiliser dans fonctions ayant besoin d'un chemin d'accès en argument... Genre fopen, ShellExecute, FindFirstFile, ect...
Ca ne marche pas lorsque je mets un chemin avec espace, genre "C:\\Program File\"...
Donc quel caractère utiliser? Où s'il y a un autre moyen??
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 31 août 2006 à 14:21
SAKingdom, j'ai rien compris à ta réponse :)
Je crois que le problème est au niveau des espaces dans les chemins.
Je crois qu'il faut utiliser des guillemets lots de l'appel du programme, sinon il considère qu'il y a plusieurs arguments:
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 31 août 2006 à 14:44
Si tu appelles un programme avec un chemin avec des espaces, tu as un problème:
programmes.exe C:\Program Files\etc
-> programme va croire qu'on lui passe deux arguments (C:\Program et Files\etc)
programmes.exe "C:\Program Files\etc"
-> programme ne recoit qu'un seul argument
Si il existe bien un fichier test.txt dans ton répertoire Windows, il n'y aura pas de problème. C'est théoriquement impossible. Si il y a un problème durant l'ouverture, il sera detecté dans ce code.
Au fait, si le compilateur revoie des érreures, peux tu nous dire lequelles?
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 31 août 2006 à 14:30
Désolé. C'est pas encore claire.
Le problème peut venir aussi du fait qu'il soit, peut-être, en UNICODE. Dans ce cas, suffis d'ajouter un L ou TEXT devant la chaine:
wfopen(L"c:\\windows\\text.txt", L"r");
ou
wfopen(TEXT("c:\\windows\\text.txt"), TEXT("r"));
et bien sûr, d'utiliser des fonctions UNICODE. Ou sinon, de désactiver UNICODE dans les propriétés du projet.
C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
Vous n’avez pas trouvé la réponse que vous recherchez ?
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 31 août 2006 à 14:41
Il dit qu'il a un problème lorsqu'il utilise par exemple "C:\\Program File\"... en argument de fopen etc. Si il est en UNICODE, c'est normale que ça ne fonctionne pas.
Sinon, je n'ai jamais eu de problème avec les espaces. Je trouve ça bizzare.
C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 31 août 2006 à 14:48
Ok je comprend ce que tu veux dire. Cependant, il dit qu'il a aussi un problème avec fopen et FindFirstFile. Tu crois que le problème soit les espaces là aussi (je sais pas je demande).
C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
SnOOpss
Messages postés570Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 31 août 2006 à 17:27
Perso (sur un autre langage de programation je passait par les short path name ex
"C:\\long directory name" donne "c:\\LONGDI~1" il n'y a jamais d'espace
Je viens de voir que ces fonction existe sur c++ GetShortPathName et GetFullPathName
SnOOpss
Messages postés570Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 31 août 2006 à 17:35
Lol oui mais ce n'est pas ce que je voulait dire, en fait j'ai eu le meme probleme sur un autre langage et j'ai utlisé ces 2 fonctions pour m'en sortir et je viens de voir quelles existe aussi en c++.
En fait elle permette d'obtenir le "short version of a long filename" c'est le nom du fichier sous le vieux ms-dos (qui ne gere ni les long nom ni les espaces). Les 2 chemins sont 100/100 identique pour XP a part que l'un ne possede aucun espaces et donc ca m'avait aidé.
SnOOpss
Messages postés570Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 31 août 2006 à 17:58
Ben sans voir le code je ne sait pas trop ce qu'il veut faire, avec les guillemets je pense que c'est possible pour shellExecute quitte a passer par le code ASCII mais sinon par exemple.
ShellExecute(NULL, NULL, "prog.exe c:/rep 1/prog1.txt c:/rep 1/prog2.txt", NULL, NULL, SW_SHOWMAXIMIZED);
Si le fichier prog.exe ne gere pas les espaces je faisait
ce qui devrait donner si je me suis pas planté
ShellExecute(NULL, NULL, "prog.exe C:/REP~1/PROG1.TXT C:/REP~1/PROG2.TXT", NULL, NULL, SW_SHOWMAXIMIZED);
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 3 sept. 2006 à 14:18
Je ne comprend pas. Avec ShellExecute, oui c'est normal mais avec fopen et FindFirstFile.... Les espaces ne cause pas de problème avec fopen. Ça signifie que le problème pour ces fonctions vien peut-être d'ailleur.
C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--
ssmint
Messages postés43Date d'inscriptionmercredi 30 novembre 2005StatutMembreDernière intervention 5 décembre 2008 6 sept. 2006 à 01:00
Les fonctions qui posaient problèmes étaient FindFirstFile et GetFileAttribute...
Il n'y a pas de problèmes d'espaces avec les fonctions ShellExecute et fopen ou encore d'autre fonctions que j'ai utilisé dans ce prog comme CreateDirectory, RemoveDirectory, DeleteFile, MoveFile, ect...