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

cs_thejrem 26 Messages postés lundi 22 octobre 2007Date d'inscription 11 juin 2010 Dernière intervention - 26 mai 2010 à 02:54 - Dernière réponse : cs_yex 28 Messages postés jeudi 3 octobre 2002Date d'inscription 31 mai 2010 Dernière intervention
- 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
cs_thejrem 26 Messages postés lundi 22 octobre 2007Date d'inscription 11 juin 2010 Dernière intervention - 27 mai 2010 à 01:57
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);

Merci cs_thejrem 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_thejrem
fregolo52 1108 Messages postés mercredi 15 juin 2011Date d'inscription 10 juillet 2018 Dernière intervention - 26 mai 2010 à 08:55
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
cs_louis14 788 Messages postés mardi 8 juillet 2003Date d'inscription 8 mars 2017 Dernière intervention - 26 mai 2010 à 10:45
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
cs_thejrem 26 Messages postés lundi 22 octobre 2007Date d'inscription 11 juin 2010 Dernière intervention - 27 mai 2010 à 01:04
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
cs_yex 28 Messages postés jeudi 3 octobre 2002Date d'inscription 31 mai 2010 Dernière intervention - 31 mai 2010 à 00:16
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.