Mots clés associés à pc : boite noire, mystique, vaudou, paranormal, magie etc..
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 2009
-
11 mai 2007 à 17:01
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 2009
-
13 mai 2007 à 21:20
Salut à tous, voici un petit bout de code bizarre :
bool CAppLocalizeDlg::ClassInfosTable(char ** tab, int nb)
{
// MessageBox(L"Texte",L"Titre",MB_OK);
m_htiEndListConfig m_htiHeadListConfig NULL;
int i=0;
int idconf=-1;
char * nameconf = new char [50];
char * typedb = new char [50];
char * namedb = new char [255];
char * nametable = new char [50];
int nbfields=0;
char ** namefields;
int searchid = -1;
while (i<nb)
{
sscanf(tab[++i],"IDConf = %d",&idconf);
nameconf = GetValue(tab[++i]);
typedb = GetValue(tab[++i]);
namedb = GetValue(tab[++i]);
nametable = GetValue(tab[++i]);
sscanf(tab[++i],"NBFields = %d",&nbfields);
namefields = new char * [nbfields];
i++;
for (int j=0;j<nbfields;j++)
namefields[j] = new char[50] = GetValue(tab[++i]);
sscanf(tab[++i],"SearchField = %d",&searchid);
...
Si j'active la messagebox en bleu, le programme plante au niveau du code en rouge. Quelqu'un a une solution ?
est ce que c'est un truc gros comme une maison que je vois pas ?
s'il faut des indications supplémentaires demandez moi.
merci d'avance pour les idées.
Loki
A voir également:
Mots clés associés à pc : boite noire, mystique, vaudou, paranormal, magie etc..
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011 13 mai 2007 à 17:12
la bonne méthode(pas la solution au problème):
MessageBoxA(hWnd, "message", "title", ...); // ANSI
MessageBox(hWnd, LL"title", ...); // WIDE
MessageBox(hWnd, TEXT("message"), TEXT("title"), ...);
avec les MFC/ATL, le premier argument(hWnd) est ignorer je crois(comme dans le code plus haut)
//
// tu fais plusieurs « ++i » dans ton while()
// après un tour de boucle, « i » pourrait très
// bien valoir bien plus que « nb » ...
//
while (i<nb)
{
// ...
for
( ...; ...; ... )
namefields[j] = new char[50] = GetValue(tab[++i]);
//
// en gros, tu fais ceci:
// namefields[j] = new char[50];
// namefields[j] = GetValue(tab[++i]); // tu écrases l'allocation précédente
//
// t'as que des fuites de mémoire
//
// si GetValue() retourne une chaine utilises strcpy() (ou autre équivalent)
// après allocation avec « new », sinon il y a <string> de la STL ...
//
}
tu devrais vérifier certaines valeurs, comme « nbfields » par exemple, avant le « new »
en fait, tu devrais repenser un peu ton code ... tu pourrais aussi utiliser le débogueur, y aller ligne / ligne et regarder les valeurs de tes variables, etc.
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 13 mai 2007 à 20:44
Saifer > oui si je mets en commentaire ça ne plante plus... pour ce qui est de l'erreur en elle même je ne sais pas trop.
j'exécute le prog en debug mais sur emulateur windows mobile 5.0 et quand ca plante, l'emul m'affiche un message à propos d'une erreur sur un certain gwes.exe je crois et me propose d'envoyer a microsoft. rien de plus. le compilo ne réagit pas plus que l'arrêt de l'exécution du programme.
je vois pas comment faire plus, désolé.
NitRic > merci pour tous tes conseils.
j'avais pas bien compris le système d'allocation apparemment. je croyais que je devais allouer l'espace et ensuire la deuxième partie copiait simplement la chaine retournée par GetValue() dans mon allocation mémoire.
pour ce qui est du i c'est pas grave et dans mon cas improbable.
pour les messagebox tu as entièrement raison, mais le compilo gère suffisament bien pour faire du bourrin comme j'ai fait :p
qu'en pensez vous ?
Loki
Vous n’avez pas trouvé la réponse que vous recherchez ?
d'où l'utilité d'utiliser la macro TEXT(" ... "), qui préfix avec « L » ou non selon le cas
pour l'histoire du « i » c'est une bien mauvaise habitude ...
pour le reste je l'ignore, je n'ai jamais développé pour mobile, désolé