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

Lazarus Pascal Discussion :

Comment utiliser TDecompressionStream.Read avec des strings sur Delphi ou Lazarus [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Comment utiliser TDecompressionStream.Read avec des strings sur Delphi ou Lazarus
    Bonjour,

    Je souhaite extraire du texte de fichiers PDF existant sur mon disque dur.
    Après quelques recherches j'ai vu que le texte présent dans un PDF est compressé selon la méthode de compression DEFLATE.

    Heureusement pour moi j'ai vu que je ne devais pas écrire tout l'algorithme de décompression (LZ77 et Codage de HUFFMAN) car LAZARUS (et DELPHI) intégrent déjà ces fonctions.

    Ainsi avec pas mal de difficulté j'ai réussi à compresser un STRING en passant par un STREAM. Néanmoins je n'arrive pas à le décompresser. Je n'ai pas d'erreur lors de la compilation mais lors de l'exécution il y a une erreur de Buffer à la ligne : Decompressed.Read (...,...)

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      Stream := TMemoryStream.Create;
      Stream.Write (LongueurChaine,SizeOf(LongInt));
      LongueurChaine := Length (String);
      Stream.Write (String[1],LongueurChaine);
     
      Decompressed := TDecompressionStream.Create (Stream);
      Decompressed.Read (LongueurChaine,SizeOf(LongInt));
      SetLength (String2,Stream.Size);
      Decompressed.Read (String2[1],Stream.Size);
      Decompressed.Free;
    String est biensur une chaine compressée par CompressionStream.Write
    String2 est la chaine de sortie qui normalement devrait être décompressé!!!

    Après plein d'essais je n'arrive pas à utiliser cette fonction TDecompressionStream.READ

    Merci pour toute aide

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    C'est bon j'ai corrigé le problème.
    J'ai retiré la seconde ligne du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Stream.Write (LongueurChaine,SizeOf(LongInt));
    Et j'ai remplacé le Stream.Size par la longueur de chaine : LongueurChaine !

    Je me suis aidé de ce lien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // http://chiragdalal.tripod.com/howto/compress_strings.html
    Peut être ce bout de code pourra aider quelqu'un qui avait le même problème ?

    Sujet clos.

  3. #3
    Membre expérimenté
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Points : 1 688
    Points
    1 688
    Par défaut
    Merci pour l'infos

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 879
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 879
    Points : 15 311
    Points
    15 311
    Par défaut
    Citation Envoyé par Leam38 Voir le message
    Je me suis aidé de ce lien:
    Lien mort, dommage...

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

Discussions similaires

  1. [XSLT]Problème sur une comparaison if avec des strings
    Par LoDev dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 18/01/2008, 09h27
  2. Réponses: 3
    Dernier message: 22/09/2007, 13h56
  3. Réponses: 3
    Dernier message: 09/08/2006, 11h58
  4. comment faire switch avec des strings ?
    Par ilimo dans le forum C++
    Réponses: 2
    Dernier message: 18/04/2006, 21h08
  5. Réponses: 1
    Dernier message: 06/08/2003, 11h48

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