использую TCompressionStream и TDeCompressionStream
код для архивирования
- Код: Выделить всё
var
wCompress: TCompressionStream;
wDestFile: TFileStream;
begin
wDestFile:=TFileStream.Create(UTF8ToSys(fFileName), fmOpenRead);
try
wDestFile.Position:=0;
wCompress:=TCompressionStream.Create(fCompessMode, fCompressed);
try
wCompress.CopyFrom(wDestFile, wDestFile.Size);
if fCompressed.Size <= 0 then
begin
fResult:=rcNone;
fCompressed.LoadFromStream(wDestFile);
end
else
fResult:=rcOk;
Synchronize(@SendResult);
finally
wCompress.Free;
end;
finally
wDestFile.Free;
end;
end;
код для разархивирования
- Код: Выделить всё
const
wSizeBuff = 1024;
var
wDeCompress: TDeCompressionStream;
wResultFile: TFileStream;
wReadSize: Integer;
wBuffer: array[0..wSizeBuff - 1] of Byte;
begin
wResultFile:=TFileStream.Create(UTF8ToSys(fFileName), fmCreate);
try
fCompressed.Position:=0;
wDeCompress:=TDeCompressionStream.Create(fCompressed);
try
wReadSize:=0;
repeat
wReadSize:=wDeCompress.Read(wBuffer, wSizeBuff);
wResultFile.Write(wBuffer, wReadSize);
until wReadSize <> wSizeBuff;
fResult:=rdOk;
Synchronize(@SendResult);
finally
wDeCompress.Free;
end;
finally
wResultFile.Free;
end;
end;
при попытке разархивировать выдает сообщении об ошибке буфера.
Ткните носом, где накосячил.