Acces fichier (Chemin relatif)

Résolu
Signaler
Messages postés
10
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
23 février 2006
-
Messages postés
10
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
23 février 2006
-
Bonjour à tous,
Je suis en train de développer une appli sous Visual C++.Net 2003. Elle ce présente sous forme d'une boite de dialogue MFC.

J'ai un problème pour acceder à un fichier:
J'ai une fonction qui utilise CFile m_File.Open(Chemin,CFile::ModeRead,NULL);

Le fichier que j'ai à lire ce trouve au même endroit que le .exe de mon appli.
Pour le chemin j'ai donc mis "./Fichier.csv"
Jusque la tout va bien.

Plus loin j'utilise une boite de dialogue pour aller chercher un autre fichier.

Le problème que j'ai c'est que quand je fais appel à cette fonction après avoir ouvert une boite de dialogue, ma fonction ne trouve plus le fichier avec le chemin "./Fichier.csv"

Je ne peux pas utiliser de chemin absolu car je veux que mon appli soit portable d'une machine à l'autre.

Merci d'avance de m'aider. J'espère à très vite ;-)

3 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Ajouter le flag OFN_NOCHANGEDIR à ton sélecteur de fichier.

Il faudrait aussi assurer ta currentDirectory au lancement de ton prog, ne jamais oublier qu'il pourrait ne pas pointer sur le dossier de l'exe (modif du raccourci lanceur par exemple).
Pour cela appelle ceci direct au lancement de ton prog avant d'afficher quoi que ce soit:

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

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
10
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
23 février 2006

Merci de ta réponse je vais essayer ca lundi.
Messages postés
10
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
23 février 2006

Super Merci ca marche très bien !!!