IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Erreur de code ou probleme avec le débugger


Sujet :

MFC

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut Erreur de code ou probleme avec le débugger
    Je suis a la recherche d'un truc bizzare dans mon code et j'utilise le bébugger.

    Le programme devais simplement me faire une normalisaton. En utilisant le débugger, je m'appercois que les valeurs des variable sont completement hors sujet.

    voici le code par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    CMatImg::CMatImg(IMG I)
    {
    	int x,y;
    	C = ImageWidth(I);
    	L = ImageHeight(I);
     
    	int r;
    	M = new long*[L];
    	for(y=0;y<L;y++) M[y] = new long[C];
     
    	for(y=0;y<L;y++)
    	{
    		for(x=0;x<C;x++)
    		{
    			CVB::GetPixel(I,0,x,y,M[y][x]);
    			r=M[y][x];
    		}
    	}
    }
    et voici ce que le débugger me donne :


    C'est une erreur de code ou de comprehension du fonctionnement du débugger.

    A oui, r est une valeur de la matrice M qui est la matrice image(0..255)

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    pour ta matrice M j'ai eu le même problème, c'est une variable non initialisée ce qui fait qu'elle a une valeur batarde.Fait une initialisation de la matrice à 0 avant par exemple

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    Ok merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    CMatImg::CMatImg(IMG I)
    {
    	int x,y;
    	C = ImageWidth(I);
    	L = ImageHeight(I);
     
    	int r;
    	M = new long*[L];
    	for(y=0;y<L;y++) M[y] = new long[C];
     
    	for(y=0;y<L;y++)
    	{
    		for(x=0;x<C;x++)
    		{
    			M[y][x]=0;
    			CVB::GetPixel(I,0,x,y,M[y][x]);
    			r=M[y][x];
    		}
    	}
    }
    resultat 151 !!!

    merci. Donc ca vient du compilateur qui ne comprend pas le type exact de la variable...

    Merci

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    Mais du coup ca va posser un probleme pour le reste du débuggage

    car je voulais tester ca aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    long* CMatImg::SommeColonne()
    {
    	long * profil = new long[C];
     
    	for(int x=0;x<C;x++)
    	{
    		long v = 0;
    		for(int y=0;y<L;y++)
    		{
    			v=M[y][x];//v + M[y][x];
    		}
    		profil[x]=v;
    	}
    	return profil;
    }
    et la M est la source des valeur donc je ne peux pas l'initialiser. Et il propage l'erreur a v qui débutte a 0 et fini avec une valeur -825121313

    Comment je peux faire ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Utiliser la fonction random pour initialiser M de manière aléatoire.

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    en fait M est une matrice attribut de la class


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class CMatImg
    {
    	private:
    		long**	M;
    		int		L;
    		int		C;
    Donc au début c'etait le constructeur et je pouvais y mettre un 0 puisque juste apres je le réécrasais.

    Mais la je ne peux plus sinon je perds mes données.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Alors là je passe la main

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    merci quant meme !!!

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    probleme résolu grace a l'ajout d'un cast sur la variable receveur (pour bien lui rappeler ce qu'elle est ... ou du moins pour le rappeler au debuggeur !!!)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    long* CMatImg::SommeColonne()
    {
    	long * profil = new long[C];
     
    	for(int x=0;x<C;x++)
    	{
    		long v = 0;
    		for(int y=0;y<L;y++)
    		{
    			v=v + (long)M[y][x];
    		}
    		profil[x]=v;
    	}
    	return profil;
    }
    V garde toujours une valeur correcte !!! Ce qui ne plaisait pas au compilateur, c'est qu'il ne faisait pas suivre le type ... (a mon avis) bien qu'un long** c'est tout de meme un double pointeur vers un long.
    Ne pas oublier aussi d'initialiser toute les variables au moins une fois.

    Merci de m'avoir mis sur la piste.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme avec une erreure!!
    Par d-a-v-e dans le forum C++
    Réponses: 3
    Dernier message: 09/02/2006, 21h15
  2. Probleme avec requete, une erreur survient...
    Par charleshbo dans le forum Access
    Réponses: 6
    Dernier message: 09/02/2006, 14h27
  3. Probleme avec un petit code (je debute)
    Par cladou dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 10/01/2006, 18h56
  4. Probleme avec le code
    Par vivu dans le forum C++
    Réponses: 10
    Dernier message: 29/10/2005, 20h52
  5. [langage] Probleme avec commande system et code
    Par Ludo167 dans le forum Langage
    Réponses: 3
    Dernier message: 14/07/2004, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo