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

Signaler
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
11 juin 2010
-
Messages postés
28
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mai 2010
-
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

Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
11 juin 2010

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);
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
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 ?
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
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
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
11 juin 2010

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
Messages postés
28
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mai 2010

Pour du TCHAR tu as du _tfopen qui marche très bien aussi