Accueil > Forum > > > > Probleme GetModuleFileName
Probleme GetModuleFileName
vendredi 19 octobre 2007 à 12:06:10 |
Probleme GetModuleFileName

fredsor
|
Salut a vous!! Je vous sollicite car j'ai un probleme : je dev en C sous Embedded Visual C++ (windows CE) J'ai un exe Projet_Falcon.exe, qui s'appuie sur des données presentes dans un Projet_Falcon.ini mon souci, c'est que je veux qu'il lise bien le ini, et ce sans donner un chemin en dur. Donc j'ai utilisé GetModuleFileName ainsi : TCHAR chemin[100]; GetModuleFileName(0,chemin,MAX_PATH); Cela me renvoit : \Storage Card\Projet_Falcon.exe Le souci c'est que ensuite, je veux lire le fichier present donc à l'emplacement \Storage Card\Projet_Falcon.ini Or, le probleme c'est qu'il n'y arrive pas, puisque les "\" doivent être doublés! Et j'en arrive a mon probleme : pour remplacer tout les "\" par des "\\", le compilateur me balance : error C2001: newline in constant (exemple : if(chemin[i]!=="\") =>error C2001: newline in constant
Si quelqu'un a une idée, ou croit que j'ecris des enormités, faites moi signe SVP, je vois pas trop là comment contourner le probleme
Merci d'avance! 
|
|
vendredi 19 octobre 2007 à 13:00:37 |
Re : Probleme GetModuleFileName

darunia
|
Salut,
if(chemin[i]!=="\")
est effectivement une enormité :
- l'operateur !==, c'est comment dire ... bizarre. j'aurais plus vu != - chemin[i] représente un char. Tu dois tester avec la valeur '\' et pas "\"
Sinon je comprends pas bien ton problème avec les \. Dans ton cas tu as juste a faire :
strcpy(strstr(chemin, ".") + 1, "ini)
Et le tour est joué !
D@runia
|
|
vendredi 19 octobre 2007 à 13:59:19 |
Re : Probleme GetModuleFileName

SAKingdom
|
char lpPath[300], *pPath = lpPath+GetModuleFileName(0, lpPath, 300); while(*--pPath != '.'); if(pPath >= lpPath) *(DWORD*)++pPath = 0x00696E69; Et voilà. lpPath contiendra le chemin vers le ini. C++ (@++)
|
|
vendredi 19 octobre 2007 à 14:03:19 |
Re : Probleme GetModuleFileName

fredsor
|
Merci darunia pour la réponse
Pour le !== excuse, cest une faute de frappe pour l'exemple, evidemment que cela ne passe pas.
Sinon tester avec '\', j'avais également essayer, mais il n'aime pas mieux : if(chemin[i]=='\') => error C2001: newline in constant
Enfin, ton strcpy ne fonctionne pas mieux, puisque le resultat de strcpy(strstr(chemin, ".") + 1, "ini) donne "ini" tout simplement (strstr donne ce qui se trouve apres le ".".
Moi j'ai fais char* cheminFichier = strtok(chemin,"."); cheminIni=strcat(cheminFichier,".ini");
et ca donne bien \Storage Card\Projet_Falcon.ini, mais moi je veux \\Storage Card\\Projet_Falcon.ini !! Car apres sinon il ne peux ouvrir le fichier à l'emplacement, si les '\' ne sont pas doublés
Si quelqu'un voit comment faire, help!
|
|
vendredi 19 octobre 2007 à 14:09:07 |
Re : Probleme GetModuleFileName

fredsor
|
Oups SAKingdom j'avais pas vu ta réponse Par contre ca compile bien, mais le programme ne bouge plus arrivé a tes instructions...
Peux tu m'expliquer en gros en quoi ca consiste, j'avoue ne pas connaitre "*--pPath", "0x00696E69"
Voila comment je l'ai utilisé
char lpPath[300]; char *pPath = lpPath+GetModuleFileName(0, ConvertAnsiToUnicode(lpPath), 300); =>Convert... passe de l'ascii en unicode
while(*--pPath != '.');
if(pPath >= lpPath) *(DWORD*)++pPath = 0x00696E69;
EcrireFichierBidon("pPath"); = > pour ecrire dans un fichier genre debug EcrireFichierBidon(pPath);
|
|
vendredi 19 octobre 2007 à 14:11:29 |
Re : Probleme GetModuleFileName

darunia
|
Il ne faut pas regarder ce que renvoi strcpy, mais le contenu de la variable chemin apres le strcpy ! Pour le '\' autant pour moi, il faut le doubler : '\\'
En ce qui concerne les \, il doivent etre doublés si tu le met en constante dans ton source. Si en execution, un affichage de chemin affiche
\Storage Card\Projet_Falcon.ini alors c'est correct, je ne vois pas ou est le probleme
D@runia
|
|
vendredi 19 octobre 2007 à 14:25:02 |
Re : Probleme GetModuleFileName

fredsor
|
Re Darunia,
Je n'arrive pas à declarer le '\' J'ai essayé de passer par "define", par "const char", rien n'y fait il me mets newline in constant!!
Pour le chemin \Storage Card\Projet_Falcon.ini, je suis d'accord avec toi, il est correct, cependant par la suite dans le code je fais un FILE *file=_tfopen(chemin, TEXT("wt"));
et là ce chemin doit avoir les '\' doublées. J'ai pas les yeux en face des trous ou quoi lol Au pire aurait tu un exemple , pour définir le '\' et le remplacer par '\\' à chaque fois qu'on le rencontre dans une chaine? Merci !
|
|
vendredi 19 octobre 2007 à 14:28:44 |
Re : Probleme GetModuleFileName

darunia
|
Tu travailles en Ainsi ou en Unicode ? Est ce que tu mélanges les 2 ?
D@runia
|
|
vendredi 19 octobre 2007 à 14:38:26 |
Re : Probleme GetModuleFileName

darunia
|
Autant pour moi, j'avais pas vu que t'etais en TCHAR. Il est impossible de remplacer '\' par '\\' car :
'\' n'existe pas, il sert pour les sequences d'echappement :
[ Lien ]
'\\' = \ en execution.
Si ton fopen foire sur chemin, c'est pour une autre raison.
[ Lien ] D@runia
|
|
vendredi 19 octobre 2007 à 14:38:31 |
Re : Probleme GetModuleFileName

SAKingdom
|
Non la tu melanges ansi et unicode. Voici une version unicode: WCHAR lpPath[300], *pPath = lpPath+GetModuleFileNameW(0, lpPath, 300); while(*--pPath != '.'); if(pPath >= lpPath) { *(DWORD*)++pPath = 0x006E0069; *(DWORD*)(pPath += 2) = 0x00000069; } 0x00696E69 c'est la valeur hexa de "ini\0" en sens inverse (car on travail dans le stack) C++ (@++)
|
|
Cette discussion est classée dans : projet, probleme, chemin, getmodulefilename, falcon
Répondre à ce message
Sujets en rapport avec ce message
Chemin d'un projet... [ par neub ]
Salut tt le monde et bonnes fetes de fin d'anneeVoici ma question urgente (mon projet se termine en se moment):Je souhaite recuperer le chemin de mon
probleme avec "new" [ par raptor88 ]
lorsque j'utilise l'operateur new dans mon projet actuel il renvoi un pointeur "0xbaadf00d"quelqu'un sait il d'ou cela peut-il venir ca c'est le seul
directX avec c++Builder [ par pro69 ]
J'ai un petit probleme lorsque j'essaye de compiller des projet directX avec c++Builder. Les probleme commence deja quand je tempte d'utiliser le winm
probleme avec projet MFC exe et Visual c++ 6 [ par jardel ]
voilà, lorsque je cré un projet MFC exe, visual c++ 6 trouve cette erreur :Cannot open precompiled header file: 'Debug/Draw.pch': No such file or dire
Probleme avec FILE [ par sidewalker ]
J'ai un petit probleme... La compilation s'opère sans probleme mais lors de l'exécution ça ne s'affiche pas correctement.En fait, lorsque je tape le c
wxWidgets : projet basé sur une boite de dialog ? [ par Daimadoshi ]
slt tlm, voila je voudrai faire un projet basé sur une boite de dialog avec dev c++ en me servant de wxWidgets.mon probleme est le suivant j'ai fait d
Compiler deux makefile [ par Marceleeuuh ]
salut petite question j'ai un probleme pour le developpement de mon projet. je fais un lecteur de musique sous linux. j'ai donc un makefile à compiler
probleme avec des variable membre public [ par titouf71 ]
Bonjour,J'ai un gros probleme avec des variables membres public.J'ai declare une variable membre en public en CString dans ma classe CLecture.Je voudr
probleme avec le type du projet ! [ par anonyme_man_in_this_world ]
salut !!j'ai fait deux application (Win32 console ) communiquant entre eux .cepandant lorsque j'ai crée un nouveau projet Win32 ,et j'ai fait copier
Probleme avec Visual C++ [ par chabichabs ]
J'ai un petit souci avec les ressources des boites de dialogue.Je crée un new projet et quand j'insère une ressource après les scroll bar (slider, pro
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|