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のランタイムが大きくなっていたのでした。パックファイルに圧縮オプションをつけることにしよう。