HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011
-
16 févr. 2006 à 22:31
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011
-
17 févr. 2006 à 00:30
Je programme sous C++Builder et il y a un problème au niveau de la fonction strcpy qui ne copie rien dans ma chaine AnsiString strWndCaption, le but étant d'afficher tout simplement le caption d'une fenêtre dans le texte d'un panel.
Voici le code :
//Renvoi le handle de la fenêtre.
HWND hForegrndWnd = GetForegroundWindow();
char CharBuffer[256];
char *pCharBuffer;
pCharBuffer = CharBuffer;
AnsiString strWndCaption;
//Renvoi le caption de la fenêtre dans CharBuffer.
GetWindowText(hForegrndWnd, pCharBuffer, 256);
//C'est ici que se trouve le problème la fonction ne copie rien.
strcpy(strWndCaption.c_str(), pCharBuffer);
//On affiche le résultat dans le Panel de la StatusBar.
StatusBar1->Panels->Items[0]->Text = "Caption : " + strWndCaption;
Si vous voyez des optimisations à apporter qui pourrai éviter les conversions par exemple ça m'arrangerai.
Merci d'avance
tibob51
Messages postés268Date d'inscriptionvendredi 30 avril 2004StatutMembreDernière intervention13 mai 20132 17 févr. 2006 à 00:20
Ta syntaxe est mauvaise
-tu n'a pas besoin de c_str()
il ne sert que pour qu'a rajouter le cractère de fin (\0) pour pouvoir enregistrer une AnsiString dans char
-et il faut le mot clef operator
voici la liste que j'ai en tete j'en oublie peut etre:
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 16 févr. 2006 à 23:38
Merci pour ta réponse tibob51 mais ça n'est pas ce que j'essaie de faire, en gros je veux faire une conversion d'une chaine de caractère char CharBuffer[256] en chaine AnsiString pour pouvoir l'afficher dans un label de StatusBar (qui ne peux recevoir que de l'AnsiString).
strWndCaption.c_str() permet de convertir une chaine AnsiString en *Char, et moi je veux faire l'inverse. C'est pour ça que j'utilise la ligne suivante :
strcpy(strWndCaption.c_str(), pCharBuffer);
Qui permet de copier ma chaine en format tableau de caractère dans ma variable AnsiString strWndCaption, variable qui pourra être affiché dans mon label.
Le souci c'est que la fonction n'a pas l'air de vouloir de mon strWndCaption.c_str().
Je crois qu'il faut allouer de la mémoire avec "new char" un truc dans le genre, enfin j'espère qu'il existe une fonction capable de faire la conversion parce que sinon ça sert pas à grand chose d'utiliser les AnsiString.