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

C++ Discussion :

Lecture fichier binaire


Sujet :

C++

  1. #61
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    avec la deuxième méthode, en debug ça plante à ce niveau là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           for(int i=0 ; i < NbLue ; ++i) vectorResult[PositionFichier + i] = BufferTmp[i];
    Au cas où, voici le code de ma fonction

    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
    std::vector<unsigned char> CObjetMetier::BlobToBlobVector(const OBlob & m_blob)
    {
    	std::vector<unsigned char> vectorResult;
    	short status= OLOB_NEED_DATA;
    	int PositionFichier = 0;
    	unsigned long size;
    	unsigned long optchunk;
    	unsigned int bufsize;
     
    	size = m_blob.GetSize();
     
    	// calcul de la taille du buffertemporaire optimale
    	optchunk = m_blob.GetOptimumChunkSize();
    	bufsize = ((int)(32768/optchunk)) *optchunk;
     
    	if (bufsize > size) bufsize = size;
    	unsigned char *BufferTmp = new unsigned char[bufsize];
     
    	unsigned long NbLue=0;
    	while(status == OLOB_NEED_DATA)	 
    	{
    	   NbLue = m_blob.Read(&status, BufferTmp,  bufsize );
           for(int i=0 ; i < NbLue ; ++i) vectorResult[PositionFichier + i] = BufferTmp[i];
           PositionFichier += NbLue;
    	}
     
    	return vectorResult;
    }

  2. #62
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Peut tu essayer celui la ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //buffer du fichier;
    std::vector<unsigned char> monBufferDeFichier;
    monBufferDeFichier.reserve(size); //tu reserve de la mémoire et ton tableau as toujours 0 element
     
    while(status == OLOB_NEED_DATA)	 
    	{
            //lecture du buffer
    	NbLue= result.Read(&status, BufferTmp,  bufsize );
            //copie dans le buffer de fichier en les mettant les un derrière les autres.
           for (int i=0;i<NbLue;++i) monBufferDeFichier.push_back(BufferTmp[i]);
     
          }

  3. #63
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Tu n'initialise pas la taille du vector, donc c'est normale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    size = m_blob.GetSize();
    vectorResult.resize(size);//tableau de "size" element

  4. #64
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    En effet cette méthode est bien mieux merci.

    Ce qui est quand même bizarre c'est qu'a la sérialisation la chaîne xml qui m'est retournée me laisse un peu perplexe. Le blob est composé de 32528 element alors qu'il devrait en avoir plus de 86 000

  5. #65
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    ok je vais rééssayer avec l'ancienne méthode (d'hier) avec initialisation du vector

  6. #66
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Ok c'est bien plus rapide comme ça. Le hic c'est que tous les elements ne passent pas la sérialisation. Je vais regarder où ça coince en débugant et je te tiens au courant.

  7. #67
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par identifiant_bidon Voir le message
    Ok c'est bien plus rapide comme ça. Le hic c'est que tous les elements ne passent pas la sérialisation. Je vais regarder où ça coince en débugant et je te tiens au courant.
    Comment cela plus rapide?

  8. #68
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Autant pour moi, j'ai rien dit. C'est pas très pratique de sérialiser un blob, c'est très très long. Cela dit tous les elements ne sont pas récupérés. J'ai 32528 elements et le reste sont des 0 mais la taille de vectorResult est bien de 85662 (la taille du blob en base)

  9. #69
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par identifiant_bidon Voir le message
    Autant pour moi, j'ai rien dit. C'est pas très pratique de sérialiser un blob, c'est très très long. Cela dit tous les elements ne sont pas récupérés. J'ai 32528 elements et le reste sont des 0 mais la taille de vectorResult est bien de 85662 (la taille du blob en base)
    Alors size donne la taille du blob et non fu fichier.
    fait plustot cette methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //buffer du fichier;
    std::vector<unsigned char> monBufferDeFichier;
    monBufferDeFichier.reserve(size); //tu reserve de la mémoire et ton tableau as toujours 0 element
     
    while(status == OLOB_NEED_DATA)	 
    	{
            //lecture du buffer
    	NbLue= result.Read(&status, BufferTmp,  bufsize );
            //copie dans le buffer de fichier en les mettant les un derrière les autres.
           for (int i=0;i<NbLue;++i) monBufferDeFichier.push_back(BufferTmp[i]);
     
          }

  10. #70
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    ok merci. J'imagine que sous la boucle for je dois mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PositionFichier += NbLue;
    Voici ce que j'ai comme code pour l'instant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	unsigned long NbLue=0;
    	while(status == OLOB_NEED_DATA)	 
    	{
    	   NbLue = m_blob.Read(&status, BufferTmp,  bufsize );
           for(int i=0 ; i < NbLue ; ++i) vectorResult[PositionFichier + i] = BufferTmp[i];
           PositionFichier += NbLue;
    	}

  11. #71
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par identifiant_bidon Voir le message
    ok merci. J'imagine que sous la boucle for je dois mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PositionFichier += NbLue;
    ??
    tu parle de ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    std::vector<unsigned char> monBufferDeFichier;
    monBufferDeFichier.reserve(size); //tu reserve de la mémoire et ton tableau as toujours 0 element
     
    while(status == OLOB_NEED_DATA)	 
    	{
            //lecture du buffer
    	NbLue= result.Read(&status, BufferTmp,  bufsize );
            //copie dans le buffer de fichier en les mettant les un derrière les autres.
           for (int i=0;i<NbLue;++i) monBufferDeFichier.push_back(BufferTmp[i]);
     
          }
    Non.
    ici ton tableau est de 0 element. Tu lui réserve un espace memoire ( != nombre d'element) de la taille du blob. A chaque push_back un element est ajouter au tableau à la fin. Ainsi monBufferDeFichier a le bon nombre d'element a la sortie du while.
    Tu peut le verifier avec monBufferDeFichier .size().

  12. #72
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Ok voici le code de ma fonction
    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
    std::vector<unsigned char> CObjetMetier::BlobToBlobVector(const OBlob & m_blob)
    {
    	std::vector<unsigned char> vectorResult;
    	short status= OLOB_NEED_DATA;
    	int PositionFichier = 0;
    	unsigned long size;
    	unsigned long optchunk;
    	unsigned int bufsize;
     
    	size = m_blob.GetSize();
    	vectorResult.resize(size);
     
    	// calcul de la taille du buffertemporaire optimale
    	optchunk = m_blob.GetOptimumChunkSize();
    	bufsize = ((int)(32768/optchunk)) *optchunk;
     
    	if (bufsize > size) bufsize = size;
    	unsigned char *BufferTmp = new unsigned char[bufsize];
     
    	unsigned long NbLue=0;
    	while(status == OLOB_NEED_DATA)	 
    	{
    	   NbLue = m_blob.Read(&status, BufferTmp,  bufsize );
           for(int i=0 ; i < NbLue ; ++i) vectorResult.push_back(BufferTmp[i]);
    	}
     
    	return vectorResult;
    }
    VectorResult fait 118190 elements (au lieu de 85660) et les 32 000 et quelques derniers sont renseignés. Les précédents sont a 0.

    size = 85662
    vectorResult contient 118190 elements
    optchunk = 8132
    bufsize = 32528

  13. #73
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Donc c'est cool. Non?
    Tu récupère bien ton fichier de 118190 octet = 115Ko dans le vector

    [EDIT]
    avoir des 0 dans un fichier binaire, c'est pas choquant. Ne t'en préoccupe pas trop

  14. #74
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Ben en fait non, en base j'ai mon blob de 85660 octets.

    C'est cela qu'il faudrait que je récupère en fait. La ce que je récupère c'est 85660 0 d'affilée, puis mon blob commence avec % P D F : normal mais tout n'est pas mis dans le vector. Normalement cela devrait se finir par E O F ce qui n'est pas le cas.

    La précédente solution récupérait bien 85660 octets (le blob complet) mais merdait dans le while et sortait de cette boucle après y être entré 1 fois, ce qui fait que seulement les 32528 premiers octets étaient renseignées mais pas les suivants (les suivants étaient tous à 0)

    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
    std::vector<unsigned char> CObjetMetier::BlobToBlobVector(const OBlob & m_blob)
    {
    	std::vector<unsigned char> vectorResult;
    	short status= OLOB_NEED_DATA;
    	int PositionFichier = 0;
    	unsigned long size;
    	unsigned long optchunk;
    	unsigned int bufsize;
     
    	size = m_blob.GetSize();
    	vectorResult.resize(size);
     
    	// calcul de la taille du buffertemporaire optimale
    	optchunk = m_blob.GetOptimumChunkSize();
    	bufsize = ((int)(32768/optchunk)) *optchunk;
     
    	if (bufsize > size) bufsize = size;
    	unsigned char *BufferTmp = new unsigned char[bufsize];
     
    	unsigned long NbLue=0;
    	while(status == OLOB_NEED_DATA)	 
    	{
    	   NbLue = m_blob.Read(&status, BufferTmp,  bufsize );
           for(int i=0 ; i < NbLue ; ++i) vectorResult[PositionFichier + i] = BufferTmp[i];
           PositionFichier += NbLue;
    	}
     
    	return vectorResult;
    }

    Voila excuse moi si je n'avais pas été assez clair

  15. #75
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par identifiant_bidon Voir le message
    Ben en fait non, en base j'ai mon blob de 85660 octets.

    C'est cela qu'il faudrait que je récupère en fait. La ce que je récupère c'est 85660 0 d'affilée, puis mon blob commence avec % P D F : normal mais tout n'est pas mis dans le vector. Normalement cela devrait se finir par E O F ce qui n'est pas le cas.

    La précédente solution récupérait bien 85660 octets (le blob complet) mais merdait dans le while et sortait de cette boucle après y être entré 1 fois, ce qui fait que seulement les 32528 premiers octets étaient renseignées mais pas les suivants (les suivants étaient tous à 0)

    Voila excuse moi si je n'avais pas été assez clair
    Lol,
    j'ai pas precisé, cette methode doit commencer avec un tableau de 0 element il faut donc pas faire le resize faut le remplacer par reserve. Ce n'est pas la même chose.
    Resize(x) : met a x le nombre d'element du vecteur. Fait des allocation memoire si besoin
    reserve(x) : alloue x en memoire,mais ne change pas le nombre d'éléments
    push_back : ajoute un element a la fin du tableau


    Code C++ : 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
    std::vector<unsigned char> CObjetMetier::BlobToBlobVector(const OBlob & m_blob)
    {
    	std::vector<unsigned char> vectorResult;
    	short status= OLOB_NEED_DATA;
    	int PositionFichier = 0;
    	unsigned long size;
    	unsigned long optchunk;
    	unsigned int bufsize;
    	
    	size = m_blob.GetSize();
    	vectorResult.reserve(size);
     
    	// calcul de la taille du buffertemporaire optimale
    	optchunk = m_blob.GetOptimumChunkSize();
    	bufsize = ((int)(32768/optchunk)) *optchunk;
     
    	if (bufsize > size) bufsize = size;
    	unsigned char *BufferTmp = new unsigned char[bufsize];
     
    	unsigned long NbLue=0;
    //buffertemporaire a une memoire de size element et un nombre de o element
    	while(status == OLOB_NEED_DATA)	 
    	{
    	   NbLue = m_blob.Read(&status, BufferTmp,  bufsize );
           for(int i=0 ; i < NbLue ; ++i) vectorResult.push_back(BufferTmp[i]);
    	}
     //buffertemporaire a une memoire de size element ou plus et un nombre de taille_du_fichier elements
    	return vectorResult;
    }

  16. #76
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Désolé avec ce code ci, je récupère 32528 éléments. Tous les caractères sont renseignés mais il n'y en a que 32528. En gros, il rentre dans la boucle, fait son taf et resors de la boucle tout de suite ...

    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
    std::vector<unsigned char> CObjetMetier::BlobToBlobVector(const OBlob & m_blob)
    {
    	std::vector<unsigned char> vectorResult;
    	short status= OLOB_NEED_DATA;
    	int PositionFichier = 0;
    	unsigned long size;
    	unsigned long optchunk;
    	unsigned int bufsize;
     
    	size = m_blob.GetSize();
    	vectorResult.reserve(size);
     
    	// calcul de la taille du buffertemporaire optimale
    	optchunk = m_blob.GetOptimumChunkSize();
    	bufsize = ((int)(32768/optchunk)) *optchunk;
     
    	if (bufsize > size) bufsize = size;
    	unsigned char *BufferTmp = new unsigned char[bufsize];
     
    	unsigned long NbLue=0;
    	while(status == OLOB_NEED_DATA)	 
    	{
    	   NbLue = m_blob.Read(&status, BufferTmp,  bufsize );
           for(int i=0 ; i < NbLue ; ++i) vectorResult.push_back(BufferTmp[i]);
    	}
     
    	return vectorResult;
    }

  17. #77
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Il faudrait juste jouer sur bufsize je pense et le laisser ici a 85660

  18. #78
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par identifiant_bidon Voir le message
    Désolé avec ce code ci, je récupère 32528 éléments. Tous les caractères sont renseignés mais il n'y en a que 32528. En gros, il rentre dans la boucle, fait son taf et resors de la boucle tout de suite ...
    Par ce qu'a mon avis ton fichier fait 32528 octet. Tout simplement.
    Tu peut le verifier en ecrivant ton buffer dans un fichier temporaire

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    std::ofstream fout("c:/test.pdf",std::ios::binary);
    fout.write(&vectorResult[0],vectorResult.size());
    fout.close();

    Sinon si tu es sur que le fichier n'est jamais plus grand que la taille du BLOB, tu pourrai faire cela
    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
    std::vector<unsigned char> CObjetMetier::BlobToBlobVector(const OBlob & m_blob)
    {
    	std::vector<unsigned char> vectorResult;
    	short status= OLOB_NEED_DATA;
    	int PositionFichier = 0;
    	unsigned long size;
    	unsigned long optchunk;
    	unsigned int bufsize;
     
    	size = m_blob.GetSize();
    	vectorResult.resize(size);//taille le vecteur à la taille maximum du blob
     
    	// calcul de la taille du buffertemporaire optimale
    	optchunk = m_blob.GetOptimumChunkSize();
    	bufsize = ((int)(32768/optchunk)) *optchunk;
     
    	if (bufsize > size) bufsize = size;
    	unsigned char *BufferTmp = new unsigned char[bufsize];
     
    	unsigned long NbLue=0;
    	while(status == OLOB_NEED_DATA)	 
    	{
    	   NbLue = m_blob.Read(&status, BufferTmp,  bufsize );
     
             //blindage, au cas ou l'on dépasse la grandeur du vector
              if (PositionFichier + NbLue >vectorResult.size())
                {
                vectorResult.resize(PositionFichier + NbLue);
                }
     
     
           for(int i=0 ; i < NbLue ; ++i) vectorResult[PositionFichier + i] = BufferTmp[i];
           PositionFichier += NbLue;
    	}
            vectorResult.Resize(PositionFichier );//met le nombre d'element à la taille du fichier
    	return vectorResult;
    }

  19. #79
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Bon ben j'ai employé une solution un peu bourrin mais qui a le mérite de fonctionner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	bufsize = size;
    	unsigned char *BufferTmp = new unsigned char[bufsize];
    Je récupère du coup mon blob avec ses 85662 caractères.

  20. #80
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par identifiant_bidon Voir le message
    Bon ben j'ai employé une solution un peu bourrin mais qui a le mérite de fonctionner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	bufsize = size;
    	unsigned char *BufferTmp = new unsigned char[bufsize];
    Je récupère du coup mon blob avec ses 85662 caractères.

    ??? tu disait que cela ne marchais pas????


    tien je viens de voir que tu as oublié
    EnableStreaming(size); et DisableStreaming(). avant et aprés le tranfert en streaming

    Bon si tu peut tout récuperer d'un coup t'emerde pas. Mais tu est limité a 512Ko (dans la doc). Un dernier conseil, utilse des vector plustôt que des tableau dynamique.

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

Discussions similaires

  1. Lecture fichier binaire et inversion d'octets
    Par zoro_le_renard dans le forum Fortran
    Réponses: 8
    Dernier message: 17/07/2007, 21h35
  2. Lecture fichier binaire
    Par djidji dans le forum Langage
    Réponses: 1
    Dernier message: 09/11/2006, 12h58
  3. Réponses: 5
    Dernier message: 02/10/2006, 23h54
  4. Lecture fichier binaire
    Par kek_net dans le forum Langage
    Réponses: 5
    Dernier message: 07/08/2006, 20h37
  5. Lecture fichier binaire
    Par gabule dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 30/05/2006, 16h53

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