Conversion de cstring en const char* [Résolu]

Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Dernière intervention
11 juin 2010
- - Dernière réponse : cs_yex
Messages postés
28
Date d'inscription
jeudi 3 octobre 2002
Dernière intervention
31 mai 2010
- 31 mai 2010 à 00:16
bonjour
je devloppe en c sur visual studio 2008 et je test l'existance d'un fichier en faisant ceci mais j'ai un probleme

if (dwMajorVersion == 5)//test si l'os est XP
{
GetEnvironmentVariable(TEXT("USERPROFILE"),user5,512);//recuperation de la variable d'environement %USERPROFILE%
CString start=user5 ;
start+=TEXT("\\Menu Démarrer\\Programmes\\Démarrage\\ServeurSocket.exe");//chemmun d'accé au repertoir demarrage
FILE* tstart = fopen(start,"r");//ouvertur du fichier
if (tstart == 0)//test si l'ouvertur a echoué
{
CheckEtat=0; //checkbox decoché initialement
}
else //si le fichier c'est ouvert
{
CheckEtat=1; //checkbox coché initialement
int close= fclose(tstart);//fermeture du fichier
}
}

sauf mon probleme est que fopen veut un const char* et start est un cstring
j'ai testé deux methode et ça ne marche pas
const char* temp = start.GetBuffer();
et
const char *temp = ( const char *)(LPCTSTR)start;

est ce quelqu'un aurai une iddé comment convertir un cstring en const char* ou sinon un fopen aceptant un cstring
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Dernière intervention
11 juin 2010
3
Merci
bon voila une solution qui fonctionne en plus unicode !!
if (dwMajorVersion == 6 )//test si l'os est vista ou seven
{
GetEnvironmentVariable(TEXT("APPDATA"),appdata,512);
CString start=appdata ;
start+=TEXT("\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ServeurSocket.exe");
HANDLE tstart= CreateFile(start, GENERIC_READ, 0,NULL,OPEN_EXISTING, 0,NULL);
if (tstart == 0)
{
CheckEtat=0;
}
else
{
CheckEtat=1;
}
CloseHandle(tstart);
}
UpdateData(false);

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_thejrem
Messages postés
1108
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
10 juillet 2018
0
Merci
salut
ca ne marche pas !!! bah wouai !! mais quelles sont les erreurs !!!!!
GetBuffer prend un entier en paramètre et retourne un LPTSTR, pas de const. Et
const char *temp = ( const char *)start; // pourquoi tu avais mis un double cast ?
Commenter la réponse de fregolo52
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Dernière intervention
8 mars 2017
0
Merci
Bonjour,
Pour ma part j'utiliserai :
char* buf = start.GetBuffer(start.Getlength())
et surtout une fois que c'est fini start.releaseBuffer().
Cherche l'aide MSDN pour la classe CString, GetBuffer.

louis
Commenter la réponse de cs_louis14
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Dernière intervention
11 juin 2010
0
Merci
je suis debutant et apres modification j'ai quelques erreur
je pense que je vais essayer de remplacé fopen par des creatfile il prend des cstring lui
enfin il me semble
Commenter la réponse de cs_thejrem
Messages postés
28
Date d'inscription
jeudi 3 octobre 2002
Dernière intervention
31 mai 2010
0
Merci
Pour du TCHAR tu as du _tfopen qui marche très bien aussi
Commenter la réponse de cs_yex

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.