Conversion de cstring en const char*

Résolu
cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010 - 26 mai 2010 à 02:54
cs_yex Messages postés 28 Date d'inscription jeudi 3 octobre 2002 Statut Membre 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

5 réponses

cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010
27 mai 2010 à 01:57
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);
3
fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 3
26 mai 2010 à 08:55
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 ?
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
26 mai 2010 à 10:45
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
0
cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010
27 mai 2010 à 01:04
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
0

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

Posez votre question
cs_yex Messages postés 28 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mai 2010
31 mai 2010 à 00:16
Pour du TCHAR tu as du _tfopen qui marche très bien aussi
0