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

Discussion :

Problème de pointeur / QDataStream et/ou QByteArray

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Par défaut Problème de pointeur / QDataStream et/ou QByteArray
    Bonjour, je souhaite faire une classe équivalente a IDataInput(ActionScript 3.0) en C++ avec Qt

    Voici toutes mes sources

    main.cpp
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #include <DataInput.h>
    #include <QtCore>
    #include <QApplication>
     
    int main(int argc, char *argv[])
    {
    	QApplication a(argc, argv);
     
    	bool myBool =  true;
     
    	//Création d'un tableau
    	QByteArray myByteArray;
     
    	// Je rajoute le bool true dans le tableau
    	QDataStream myStream(&myByteArray, QIODevice::WriteOnly);
    	myStream << myBool;
     
    	// J'extrais le bool du tableau
    	DataInput dataRead(&myByteArray);
    	myBool = dataRead.readBoolean();
     
    	// qDebug() retourne false, pourtant j'ai donné un true
    	qDebug() << myBool;
     
    	return a.exec();
    }
     
    	bool myBool =  true;
     
    	QByteArray myByteArray;
    	QDataStream myStream(&myByteArray, QIODevice::WriteOnly);
    	myStream << myBool;
     
    	DataInput dataRead(&myByteArray);
    	qDebug() << dataRead.readBoolean();
     
    	return a.exec();
    }
    DataInput.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include "DataInput.h"
     
    DataInput::DataInput(QByteArray *byteArray)
    {
    	QDataStream m_myStream(*byteArray);
    }
     
    bool DataInput::readBoolean()
    {
    	bool myBool;
    	m_myStream >> myBool;
    	return myBool;
    }
    DataInput.h
    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
    #ifndef DATAINPUT_H
    #define DATAINPUT_H
     
    #include <QByteArray>
    #include <QDataStream>
     
    class DataInput
    {
    public:
    	DataInput(QByteArray *byteArray);
     
    	bool readBoolean();
     
    private:
    	QDataStream m_myStream;
     
    };
     
    #endif // DATAINPUT_H
    Dans le main, je crée un tableau d'octet et je rajoute un bool qui vaut true.
    Seulement quand j'essaye de l'extraire avec ma classe DataInput, je reçois un false.

    Je ne comprends pas pourquoi, pourriez-vous me donner un peu d'aide ?
    Merci à tous et bonne journée !

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Par défaut
    Bonjour, j'ai résolu mon problème

    Voici ma nouvelle classe

    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
    #ifndef DATAINPUT_H
    #define DATAINPUT_H
     
    #include <QByteArray>
    #include <QDataStream>
    #include <qdebug.h>
     
    class DataInput
    {
    public:
    	DataInput(QByteArray *byteArray);
     
    	bool readBoolean();
     
    private:
    	QDataStream m_myStream;
     
    };
     
    #endif // DATAINPUT_H
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include "DataInput.h"
     
    DataInput::DataInput(QByteArray *byteArray)
    	: m_myStream(*byteArray)
    {
    }
     
    bool DataInput::readBoolean()
    {
    	bool myBool;
    	m_myStream >> myBool;
    	return myBool;
    }

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DataInput::DataInput(QByteArray *byteArray)
    {
    	QDataStream m_myStream(*byteArray);
    }
    Tu crées une variable locale du même nom m_myStream que la variable membre de ta classe, mais qui n'a cependant rien à voir avec elle (elle n'a d'existence qu'à l'intérieur du constructeur). À modifier en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DataInput::DataInput(QByteArray *byteArray)
        : m_myStream(*byteArray)
    { 
    }
    De plus, étant donné que tu vas écrire dans, mais aussi lire ton flux, il serait bon de changer cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QDataStream myStream(&myByteArray, QIODevice::WriteOnly);
    en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QDataStream myStream(&myByteArray, QIODevice::ReadWrite);
    edit : grillé pour la première partie.

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

Discussions similaires

  1. Problème de pointeurs..embrouillé
    Par Frenchy dans le forum C++
    Réponses: 11
    Dernier message: 10/03/2005, 16h33
  2. Problème de pointeur avec un TQuery
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/01/2005, 13h57
  3. Problème de pointeur
    Par toma_lille dans le forum C++
    Réponses: 1
    Dernier message: 07/12/2004, 21h26
  4. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 15h50
  5. TBitmap et problèmes de pointeurs...
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/07/2003, 13h39

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