|
@@ -70,6 +70,7 @@ type
|
|
raw_read,compressed_read:longint;
|
|
raw_read,compressed_read:longint;
|
|
skipheader:boolean;
|
|
skipheader:boolean;
|
|
procedure reset;
|
|
procedure reset;
|
|
|
|
+ function GetPosition() : Int64; override;
|
|
public
|
|
public
|
|
constructor create(Asource:Tstream;Askipheader:boolean=false);
|
|
constructor create(Asource:Tstream;Askipheader:boolean=false);
|
|
destructor destroy;override;
|
|
destructor destroy;override;
|
|
@@ -321,6 +322,11 @@ begin
|
|
raise Edecompressionerror.create(zerror(err));
|
|
raise Edecompressionerror.create(zerror(err));
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+function Tdecompressionstream.GetPosition() : Int64;
|
|
|
|
+begin
|
|
|
|
+ GetPosition := raw_read;
|
|
|
|
+end;
|
|
|
|
+
|
|
function Tdecompressionstream.seek(offset:longint;origin:word):longint;
|
|
function Tdecompressionstream.seek(offset:longint;origin:word):longint;
|
|
|
|
|
|
var c:longint;
|
|
var c:longint;
|
|
@@ -330,7 +336,7 @@ begin
|
|
((origin=sofromcurrent) and (offset+raw_read>=0)) then
|
|
((origin=sofromcurrent) and (offset+raw_read>=0)) then
|
|
begin
|
|
begin
|
|
if origin = sofromcurrent then
|
|
if origin = sofromcurrent then
|
|
- seek := compressed_read - offset
|
|
|
|
|
|
+ seek := raw_read + offset
|
|
else
|
|
else
|
|
seek := offset;
|
|
seek := offset;
|
|
|
|
|