Conversion path

flatmax Messages postés 37 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 30 août 2003 - 28 août 2003 à 20:38
flatmax Messages postés 37 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 30 août 2003 - 29 août 2003 à 02:11
Salut a tous
lorsque l'on recupere un path avec la classe CFileDialog (avec les MFC de Visual C++), on obtient une variable avec par exemple : c:\mes documents\

Le probleme est qu'il faut changer les \ en \\ pour utiliser ce chemin absolue. Comment faire ?en simple svp. Existe t-il une fonction pour faire cela ?

8 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 août 2003 à 20:42
changer les \ en \\ ?????
Dans quel but ?
BruNews, ciao...
0
flatmax Messages postés 37 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 30 août 2003
28 août 2003 à 20:53
si on laisse les \, le compilateur ne reconnait pas que c'est un antislash. Pour les path, il faut doubler la barre sin on on peut rien faire
le but c'est de copier un fichier

ex :
char path[50+1]="c:\mes documents\programme.exe";
int a;
CopyFile("app.exe", path, a);

>> fonctionne pas car les antislash non doublé, enfin je pense que tu le sais mais je me suis mal expliqué dans ma question
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 août 2003 à 20:57
char path[50+1]="c:\mes documents\programme.exe";
ici bien sur faut doubler mais pas si se trouve dans une variable.
BruNews, ciao...
0
flatmax Messages postés 37 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 30 août 2003
28 août 2003 à 21:13
je vais te donner mon morceau de code, tu comprendras mieux le probleme :

void CAPPDlg::OnCreate()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString path;

CFileDialog m_SaveFile(FALSE);

if(m_SaveFile.DoModal() == IDOK)
{
path = m_SaveFile.GetPathName();
}
CopyFile("app.exe", path, a);

>> rien n'est copié
c'est la variable path qui stocke le chemin
ps : ce code est executé lorsque l'on clique sur un bouton
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 août 2003 à 21:21
CopyFile("app.exe", path, a);
probleme est ici. app.exe est quoi et ou ? c'est l'exe qui tourne, vu que pas de chemin absolu, tu es sur que ta currentdirectory est sur le dossier de app.exe ? Faut JAMAIS le presumer et ne serait pas ton selecteur de fichier qui changerait la currentdirectory ?
BruNews, ciao...
0
flatmax Messages postés 37 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 30 août 2003
28 août 2003 à 21:26
le app.exe est ds le meme repertoire que le programme, mais ce n'est pas le programme lancé
comment recuperer le currentdirectory ?pour voir si c'est ca le probleme ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 août 2003 à 21:42
Le prends pas mal mais tu as bien des questions de MFCiste.

void AppPathInitialize()
{
char szThis[300];
char* c = szThis + GetModuleFileName(NULL, szThis, 300); while(*c !'\\') c--; *c 0;
SetCurrentDirectory(szThis);
}

Appelle cela avant ta copie et fonctionnera si app.exe est dans le dossier du prog. Tu devrais mettre le flag NOCHANGEDIR a ton selecteur.
AppPathInitialize();
CopyFile("app.exe", path, 1); // 1 pour overwrite
BruNews, ciao...
0
flatmax Messages postés 37 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 30 août 2003
29 août 2003 à 02:11
ba oué, je le prends pas mal
je t'ai deja vu dire plein de fois a des personnes sur le forum "ne perd pas ton temps a programé en mode console", et quand on essaye d'apprendre par ses propres moyens on fait comme on peut :)
merci pour tes reponses en tt cas
0
Rejoignez-nous