|
|
@@ -81,11 +81,12 @@ type |
|
|
FBufferValid: boolean; |
|
|
FBufferValid: boolean; |
|
|
FBufferStart, FBufferLen, FBufferAvail: Int64; |
|
|
FBufferStart, FBufferLen, FBufferAvail: Int64; |
|
|
FPosition: int64; |
|
|
FPosition: int64; |
|
|
|
|
|
FOwnsStream: Boolean; |
|
|
protected |
|
|
protected |
|
|
function GetSize: Int64; override; |
|
|
function GetSize: Int64; override; |
|
|
procedure SetSize(const NewSize: Int64); override; |
|
|
procedure SetSize(const NewSize: Int64); override; |
|
|
public |
|
|
public |
|
|
constructor Create(const BaseStream: TStream; const BufferSize: Cardinal); |
|
|
|
|
|
|
|
|
constructor Create(const BaseStream: TStream; const BufferSize: Cardinal; const aOwnsStream: Boolean = false); |
|
|
destructor Destroy; override; |
|
|
destructor Destroy; override; |
|
|
function Read(var Buffer; Count: Integer): Integer; override; |
|
|
function Read(var Buffer; Count: Integer): Integer; override; |
|
|
function Write(const Buffer; Count: Integer): Integer; override; |
|
|
function Write(const Buffer; Count: Integer): Integer; override; |
|
|
@@ -379,19 +380,22 @@ end; |
|
|
|
|
|
|
|
|
{ TutlReadBufferStream } |
|
|
{ TutlReadBufferStream } |
|
|
|
|
|
|
|
|
constructor TutlReadBufferStream.Create(const BaseStream: TStream; const BufferSize: Cardinal); |
|
|
|
|
|
|
|
|
constructor TutlReadBufferStream.Create(const BaseStream: TStream; const BufferSize: Cardinal; |
|
|
|
|
|
const aOwnsStream: Boolean); |
|
|
begin |
|
|
begin |
|
|
inherited Create; |
|
|
inherited Create; |
|
|
FBaseStream:= BaseStream; |
|
|
FBaseStream:= BaseStream; |
|
|
FBufferLen:= BufferSize; |
|
|
FBufferLen:= BufferSize; |
|
|
FBuffer:= GetMemory(FBufferLen); |
|
|
FBuffer:= GetMemory(FBufferLen); |
|
|
|
|
|
FOwnsStream := aOwnsStream; |
|
|
FPosition:= 0; |
|
|
FPosition:= 0; |
|
|
end; |
|
|
end; |
|
|
|
|
|
|
|
|
destructor TutlReadBufferStream.Destroy; |
|
|
destructor TutlReadBufferStream.Destroy; |
|
|
begin |
|
|
begin |
|
|
FBufferValid:= false; |
|
|
FBufferValid:= false; |
|
|
//FBaseStream.Free; |
|
|
|
|
|
|
|
|
if (FOwnsStream) then |
|
|
|
|
|
FBaseStream.Free; |
|
|
FreeMemory(FBuffer); |
|
|
FreeMemory(FBuffer); |
|
|
inherited; |
|
|
inherited; |
|
|
end; |
|
|
end; |
|
|
|