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:
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 :ccool: