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

Delphi Discussion :

[TIdEncoderMIME] Erreur : "uneven size in encode"


Sujet :

Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Points : 238
    Points
    238
    Par défaut [TIdEncoderMIME] Erreur : "uneven size in encode"
    Bonjour,

    Mon précédent travail a été de convertir des objets TBitmap en String pour les stocker dans des fichiers XML, puis de les recharger. Voir ce sujet : http://www.developpez.net/forums/sho...d.php?t=147078

    En voulant faire la même chose avec un TGraphic (pour utiliser des fichiers JPG, GIF, etc.), j'obtiens l'erreur suivante :
    qui se produit à la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monString := Encode(stream, stream.size) ;
    Après quelques recherches sur le net, j'ai cru comprendre que ceci était plutôt un bug du composant TIdEncoderMIME mais qu'il devait être possible de le contourner en modifiant à la main la taille à encoder. Malheureusement j'ai été incapable de trouver un exemple de code pour le faire. Qqn peut-il m'aider ?

    Voici le code actuel :

    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
     
    stream : TStringStream ;
    Result : String ;
    ...
     
    uneImage.Graphic.SaveToStream(stream) ;
    try
      stream.Seek(0, soFromBeginning) ;
      With TIdEncoderMIME.Create(nil) do
        try
          Result := Encode(stream, stream.size); //<-- erreur là
        finally
          stream.Free;
        end ;
    (...)
    end ;

  2. #2
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Points : 238
    Points
    238
    Par défaut
    J'ai réussi à résoudre mon problème finalement.

    Lorsque l'on traite des fichiers de type TGraphic, le stream.size doit obligatoirement être un multiple de 3. Donc il faut le changer à la main pour qu'il soit divisible par 3, et ça fonctionne.

  3. #3
    Membre éprouvé
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Points : 957
    Points
    957
    Par défaut
    Je confirme concernant l'encodage. c'est bien cela le pb. pour réglé le pb, j'avais envoyé un mails aux developpeurs des composants Indy et le type qui s'occupe directement de l'encodage m'a fourni une unité modifiée du TIdEncoderMIME. Si vous la voulez envoyez moi un mp avec votre mail dedans et je vous la fait parvenir. La version modifiée s'occupe de remettre le buffer à la bonne taille.

    bonne soirée
    http://www.pocketmt.com GLCD Font Creator home site.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 130
    Points : 95
    Points
    95
    Par défaut Et faire l'inverse ?
    Bonjour à tous,

    Merci pour cette explication,ça fonctionne parfaitement bien dans ce sens...

    mais comment faire l'inverse ? c'est la première fois que j'utilise des stream alors j'avoue être un peu perdu et je n'ai pas encore beaucoup chercher re

    mais si quelqu'un peut m'aider ce serait super

    Merci, je retourne à mes recherches

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 130
    Points : 95
    Points
    95
    Par défaut
    J'ai continué mes recherches et je n'arrive pas faire l'inverse

    j'ai ouvert une nouveau fil => https://www.developpez.net/forums/d1...l/#post9202643

    Merci à tous pour votre aide

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 28/09/2012, 17h33

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