В Дельфах 2006 я следующие методы сжатия и распаковки с помощью Zlib (из Delphi 2006)
procedure CompressStream(inpStream, outStream: TStream);
var
InpBuf, OutBuf: Pointer;
InpBytes, OutBytes: Integer;
begin
InpBuf := nil;
OutBuf := nil;
try
GetMem(InpBuf, inpStream.Size);
inpStream.Position := 0;
InpBytes := inpStream.Read(InpBuf^, inpStream.Size);
CompressBuf(InpBuf, InpBytes, OutBuf, OutBytes);
outStream.Write(OutBuf^, OutBytes);
finally
if InpBuf <> nil then FreeMem(InpBuf);
if OutBuf <> nil then FreeMem(OutBuf);
end;
end;
{ Decompress a stream }
procedure DecompressStream(inpStream, outStream: TStream);
var
InpBuf, OutBuf: Pointer;
OutBytes, sz: Integer;
begin
InpBuf := nil;
OutBuf := nil;
sz := inpStream.Size - inpStream.Position;
if sz > 0 then
try
GetMem(InpBuf, sz);
inpStream.Read(InpBuf^, sz);
DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);
outStream.Write(OutBuf^, OutBytes);
finally
if InpBuf <> nil then FreeMem(InpBuf);
if OutBuf <> nil then FreeMem(OutBuf);
end;
outStream.Position := 0;
end;
Что я должен изменить для них, чтобы работать в Delphi 2009?
это поможет, если вы разместите ошибки и, возможно, какой-нибудь код? – Cheeso
Действительно, вам нужно сообщить нам, какие точные ошибки вы получаете и какую функцию вы вызывали, когда вы их получили. –
Я предполагаю, что FastZlib использует PChar вместо PAnsiChar. В Delphi 2009 SizeOf (Char) = 2, а не 1 байт, как это было в Delphi 2006. –