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 :

[toujours en galère] stocker une variable


Sujet :

MFC

  1. #21
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Up!

  2. #22
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    essaie quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void CMyImage::GetCapturedImage(BYTE* Image)
    {
        for (int i=0;i++;i<getLength(Image);i++)
       {
           m_CapturedImage = Image[i];
       }
    }
    (pas testé)
    Le principe est de créer un nouveau tableau (totalement indépendant de Image) en copiant chaque valeur de Image.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #23
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Ca ne change pas le problème; l'image est bien récupérée comme ça ou simplement en récupérant seulement le pointeur.

    Le problème, c'est quand on va vouloir venir chercher cette variable à partir d'une autre classe, m_CapturedImage aura disparue, quel que soit son type.

  4. #24
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    oui, elle aura disparue car le pointeur aura été modifié. Ce problème est récurrent en C++: on pense copier un objet alors qu'en fait, on pointe sur un autre.

    Si le pb ne vient pas de là, je ne vois pas...
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  5. #25
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Quelle est donc la solution?

    Ce que tu m'as conseillé 2 posts plus haut, c'est juste une autre méthode de conservation de mon image (remplir un tableau plutôt que conserver le pointeur qui indique où sont les données de l'image) mais je ne vois pas plus le principe de sauvagarde de quoi que ce soit pour s'en reservir d'où on veut et quand on veut en gros.

  6. #26
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    tu as essayé? Je pense que ça peut résoudre ton problème.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  7. #27
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Oui, oui, j'ai essayé.

    Dans void CMyImage::GetCapturedImage(BYTE* Image) {........}

    Je n'ai aucun problème pour récupérer les données de mon image.


    Mais quand j'appelle une fonction qui se trouve dans une autre classe et qui veut alors récupérer ces données, il n'y a plus moyen! Volatilisé par le destructeur de la classe CMyImage.

    Mais comment faire pour sauvegarder tranquillement une donnée à laquelle on peut accéder d'où on veut quand on veut?!
    Ca commence à me rendre nerveux cette histoire de fonctionnement des classes.

  8. #28
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par stof
    comment faire pour sauvegarder tranquillement une donnée à laquelle on peut accéder d'où on veut quand on veut?!
    la mettre en globale. C'est très laid et ça prouve que la conception est mauvaise, et puis tu ne peux pas l'allouer dynamiquement (su je ne me trompe pas)
    Citation Envoyé par stof
    Ca commence à me rendre nerveux cette histoire de fonctionnement des classes.
    bienvenu dans l'univers du langage objet. Au début, c'est pas évident, mais quand on a bien compris le fonctionnement, c'est extrêment puissant.

    Quand tu as des problèmes de communication entre tes classes (flux de données) je te conseille de poser ton architecture sur papier. Haaa, le bon vieux papier et le bon vieux crayon
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par r0d
    ça prouve que la conception est mauvaise
    je fais ce que je peux.
    Pour la conception, tu connais toute l'histoire : une image est prise et on la traitera ensuite (pas forcément au sein de la même classe!)
    C'est donc impossible de faire ça? Et si j'utilise une variable globale, je le fais comment exactement (parce que j'ai essayé mais dans l'autre classe on me dit que m_CapturedImage n'est pas membre de CMyImage maintenant (je l'ai mise en haut de MyImage.cpp : BYTE* m_CapturedImage)


    Citation Envoyé par r0d
    Quand tu as des problèmes de communication entre tes classes (flux de données) je te conseille de poser ton architecture sur papier. Haaa, le bon vieux papier et le bon vieux crayon
    J'ai du papier, des crayons de toutes les couleurs, des bouquins de C++, des rames, mais il me manque juste le cerveau (enfin l'expérience disons).

  10. #30
    mat.M
    Invité(e)
    Par défaut
    Ma Classe1 a une fonction qui permet d'obtenir m_variable

    Je veux que Classe2 récupère cette variable

    Je veux que Classe3 récupère la variable stockée dans Classe2 pour s'en occuper.

    Il faut essayer de piger l'architecture DOC/VUE des MFC ;

    La classe de document va stocker , comme son nom l'indique la plupart des instances de classes nécessaires à l'appli.
    En l'occurence la classe Camera , les images fournies par la caméra.
    Pour stocker les images il faut une collection d'objets comme des tableaux dynamiques comme CArray, CObArray ou des listes comme CList etc....

    Pour accéder à ces classes CView::GetDocument permet de faire cela.
    C'est pour ça que de base par exemple dans CView::OnDraw on a GetDocument

    S'inspirer de l'exemple SKETCH du MSDN ( il est fourni avec VC++).

  11. #31
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par mat.M
    La classe de document va stocker , comme son nom l'indique la plupart des instances de classes nécessaires à l'appli.
    Donc c'est pas une bonne idée de faire une classe spéciale pour contenir les images et leurs paramètres? Faut tout mettre dans la classe de document?


    Citation Envoyé par mat.M
    Pour stocker les images il faut une collection d'objets comme des tableaux dynamiques comme CArray, CObArray ou des listes comme CList etc....
    Ouh là, là... pourtant un pointeur me suffit pour une image puisque je vais lire à partir de cette adresse les valeurs de chaque pixel.

    Pour accéder à ces classes CView::GetDocument permet de faire cela.
    C'est pour ça que de base par exemple dans CView::OnDraw on a GetDocument

    Citation Envoyé par mat.M
    S'inspirer de l'exemple SKETCH du MSDN ( il est fourni avec VC++).
    Ah, j'ai cherché dans mon ordi, je ne l'ai pas (j'ai tout installé pourtant)

  12. #32
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par stof
    Citation Envoyé par mat.M
    S'inspirer de l'exemple SKETCH du MSDN ( il est fourni avec VC++).
    Ah, j'ai cherché dans mon ordi, je ne l'ai pas (j'ai tout installé pourtant)
    Je crois qu'il n'est que dans VS6, mais point dans le 7
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/09/2010, 14h29
  2. Réponses: 2
    Dernier message: 10/08/2010, 11h21
  3. Stocker une variable puis la réutiliser?
    Par centrale dans le forum Simulink
    Réponses: 2
    Dernier message: 13/01/2010, 15h23
  4. stocker une variable server
    Par benneb dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 12/11/2008, 14h49
  5. [C# 2.0] Comment stocker une variable dans une webform
    Par hirochirak dans le forum ASP.NET
    Réponses: 5
    Dernier message: 23/11/2006, 10h10

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