Bonjour les gens

J'ai écris ce petit bout de code pour compresser (enfin je le croyais) une chaîne de caractères.

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
 
function Compressed2(const ASrc: string): string;
var
  vDest: TStringStream;
  vComp: TCompressionStream;
begin
  try
    vDest := TStringStream.Create();
 
    vComp := TCompressionStream.Create(TCompressionLevel.clMax, vDest);
    vComp.Write(@ASrc[1], Length(ASrc) * sizeof(char));
  finally
    FreeAndNil(vComp);
 
    vDest.Seek(0, 0);
    Result := vDest.DataString;
    FreeAndNil(vDest);
  end;
end;
Elle fonctionne mais si je passe en entrée le classique "Bonjour le monde" qui fait 16 caractères, ça me renvoie une chaîne compressée de 33 caractères.

Donc, y'a un truc qui m'échappe mais je ne vois pas quoi :-( (à part que 33 c'est 2 * 16 + 1 mais c'est limité comme remarque )