Retrouver le chemin

cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009 - 6 oct. 2004 à 23:54
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 7 oct. 2004 à 09:49
Salut,

Y a-t-il un moyen de retrouver le chemin complet d'un fichier qui se trouverait dans le même répertoire que l'exécutable mais dans des sous-dossiers ?

Je veux utiliser les fonctions de iostreams. Et le nom de mes fichiers est reconstitué, dans mon appli, à partir d'une sélection dans une ComboBox.

Merci

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 oct. 2004 à 00:13
GetModuleFilename() donne path de ton exe, suffira de chainer a partir du dernier '\\'.

iostreams , c'est parce que ton combobox est portable ???

ciao...
BruNews, MVP VC++
0
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
7 oct. 2004 à 00:49
Je viens juste de trouver ce bout de code qui résoud mon problème :

char ch[50];
m_Liste_CourOr.GetText(m_Liste_CourOr.GetCurSel(),ch);

CString Choix=ch;
Choix +=".rtf" ;
Choix = "\\Data\\CourOr\"+ Choix;
CString szPath;
char buffer[1024];

if( _getcwd( buffer, _MAX_PATH ) == NULL )
{ // Gestion de l'erreur
//...
;
}
else
{ szPath = buffer;

}
szPath+=Choix;

Par rapport à GetModuleFilename() c'est quoi le plus rapide ?

En fait ce n'est pas un combobox mais une listbox(Mais ça ne change pas grand chose).

iostreams : c'est pour ouvrir un fichier crypté(dont le chemin est szPath) dans un flux afin de l'afficher dans un RichEditCtrl.

Merci Pour ton aide.
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
7 oct. 2004 à 09:49
c'est surtout que _getcwd() récupère le répertoire courant qui peut ne pas être le meme que le répertoire de l'exécutable donné par GetModuleFileName() (chemin complet+nom) si l'exe est invoqué à partit d'un autre endroit.

au lieu de faire:

char ch[50];
m_Liste_CourOr.GetText(m_Liste_CourOr.GetCurSel(),ch);
CString Choix=ch;

faire directement :

CString Choix;
m_Liste_CourOr.GetText(m_Liste_CourOr.GetCurSel(),Choix);
0
Rejoignez-nous