Alanlar sıkıştırmak için kullanılan kod
Kod: Tümünü seç
procedure CompressStream(aInput,aOutput: TStream);
begin
with TCompressionStream.Create(clMax, aOutput) do
try
CopyFrom(aInput,0);
finally
Free;
end;
end;
Açmak için ise
Kod: Tümünü seç
procedure DecompressStream(aInput,aOutput: TStream);
const
BUFFER_SIZE = 4096;
var
aBuffer : array[0..BUFFER_SIZE-1] of byte;
aCount : Integer;
begin
with TDecompressionStream.Create(aInput) do
try
repeat
aCount := Read(aBuffer, BUFFER_SIZE);
if aCount <> 0 then
aOutput.WriteBuffer(aBuffer, aCount)
else
break;
until False;
finally
Free;
end;
end;
Sıkıştırmada problem yok. Ancak açarken DBISAM 8711 <tablo adı> reached preamaturely hatası veriyor. Bu hata blob alanların uzunluğunun doğru verilmemesinden kaynaklanıyormuş.
Hatayı nasıl çözerim? Teşekkürler.