DLLを使わず、Delphi 2009だけで圧縮解凍するサンプルを作ってみました。

圧縮:

program comp;
{$APPTYPE CONSOLE}
uses
  SysUtils,
  Classes,
  zlib;
var
  f: TFileStream;
  c: TCompressionStream;
  s: AnsiString;
begin
  f := TFileStream.Create('comp.dat', fmCreate);
  c := TCompressionStream.Create(f);
  try
    s := 'aaaabbbbccccddddeeeeaaaabbbbccccdddd';
    c.Write(s[1], Length(s));
  finally
    c.Free;
    f.Free;
  end;
end.

解凍:

program extract;
uses
  Windows,
  SysUtils,
  Classes,
  zlib;
var
  d: TDecompressionStream;
  fLoad: TFileStream;
  fSave: TMemoryStream;
begin
  fLoad := TFileStream.Create('comp.dat', fmOpenRead);
  fSave := TMemoryStream.Create;
  d := TDecompressionStream.Create(fLoad);
  fSave.CopyFrom(d, 36);
  fSave.SaveToFile('raw.txt');
end.

ただ、zlib をリンクすると、ファイルサイズが、コンソールアプリなのに、150KBになってしまうので悩むところ。

※【4/11備考】・・・その後、検証したら、zlib のサイズは30KBほどでした。Deliphiのランタイムが大きくなっていたのでした。パックファイルに圧縮オプションをつけることにしよう。

コメント †

コメント:
お名前:

 


作成:2009-04-06 01:46:41/更新:2009-04-11 17:16:17
くじらぶろぐD by kujirahand RSS
konawiki 0.31