|
@@ -56,7 +56,7 @@ type
|
|
|
|
|
|
Tcompressionstream=class(Tcustomzlibstream)
|
|
Tcompressionstream=class(Tcustomzlibstream)
|
|
private
|
|
private
|
|
- function ClearOutBuffer: Integer;
|
|
|
|
|
|
+ procedure ClearOutBuffer;
|
|
protected
|
|
protected
|
|
raw_written,compressed_written: int64;
|
|
raw_written,compressed_written: int64;
|
|
public
|
|
public
|
|
@@ -206,13 +206,12 @@ begin
|
|
get_compressionrate:=100*compressed_written/raw_written;
|
|
get_compressionrate:=100*compressed_written/raw_written;
|
|
end;
|
|
end;
|
|
|
|
|
|
-Function TCompressionstream.ClearOutBuffer : Integer;
|
|
|
|
-
|
|
|
|
|
|
+procedure TCompressionstream.ClearOutBuffer;
|
|
|
|
|
|
begin
|
|
begin
|
|
{ Flush the buffer to the stream and update progress }
|
|
{ Flush the buffer to the stream and update progress }
|
|
- Result:=source.write(Fbuffer^,bufsize);
|
|
|
|
- inc(compressed_written,Result);
|
|
|
|
|
|
+ source.writebuffer(Fbuffer^,bufsize-Fstream.avail_out);
|
|
|
|
+ inc(compressed_written,bufsize-Fstream.avail_out);
|
|
progress(self);
|
|
progress(self);
|
|
{ reset output buffer }
|
|
{ reset output buffer }
|
|
Fstream.next_out:=Fbuffer;
|
|
Fstream.next_out:=Fbuffer;
|
|
@@ -235,13 +234,7 @@ begin
|
|
raise Ecompressionerror.create(zerror(err));
|
|
raise Ecompressionerror.create(zerror(err));
|
|
until false;
|
|
until false;
|
|
if Fstream.avail_out<bufsize then
|
|
if Fstream.avail_out<bufsize then
|
|
- begin
|
|
|
|
- source.writebuffer(FBuffer^,bufsize-Fstream.avail_out);
|
|
|
|
- inc(compressed_written,bufsize-Fstream.avail_out);
|
|
|
|
- progress(self);
|
|
|
|
- Fstream.next_out:=Fbuffer;
|
|
|
|
- Fstream.avail_out:=bufsize;
|
|
|
|
- end;
|
|
|
|
|
|
+ ClearOutBuffer;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|