Mots clés associés à pc : boite noire, mystique, vaudou, paranormal, magie etc..

Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 - 11 mai 2007 à 17:01
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 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

7 réponses

cs_saifer Messages postés 115 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 19 décembre 2008 1
12 mai 2007 à 23:24
Salut,

Si tu met en commentaire le MessageBox, le code ne plante pas et fonctionne correctement ?

-{ Saifer }-
0
cs_saifer Messages postés 115 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 19 décembre 2008 1
12 mai 2007 à 23:31
C'est encore moi !
Ca plante au niveau du code en rouge, ok, mais pourrais-tu en dire plus, qu'elle est l'erreur ?

-{ Saifer }-
0
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 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, L
L"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.





~(.:: NitRic ::.)~
0
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
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
0

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

Posez votre question
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
13 mai 2007 à 21:13
Pour les MessageBox(), ca n'a rien a voir avec le compilateur mais avec une macro( UNICODE )

#ifdefined( UNICODE )
#define MessageBox    MessageBoxW
#else  /* Not UNICODE */
#define MessageBox    MessageBoxA
#




endif


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é





~(.:: NitRic ::.)~
0
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
13 mai 2007 à 21:14
le formatage fait vraiment pitier...

~(.:: NitRic ::.)~
0
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
13 mai 2007 à 21:20
euh ok

Loki
0
Rejoignez-nous