mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 12:48:16 +02:00
* Added Read64/Write64
This commit is contained in:
parent
042eb7e8c1
commit
7097a1030f
@ -957,10 +957,12 @@ type
|
||||
function Read(var Buffer; Count: Longint): Longint; virtual; overload;
|
||||
function Read(var Buffer: TBytes; Count: Longint): Longint; overload;
|
||||
function Read( Buffer : TBytes; aOffset, Count: Longint): Longint; overload;
|
||||
function Read64( Buffer : TBytes; aOffset, Count: Int64): Int64; overload;
|
||||
|
||||
function Write(const Buffer: TBytes; Offset, Count: Longint): Longint; overload;
|
||||
function Write(const Buffer: TBytes; Count: Longint): Longint; overload;
|
||||
function Write(const Buffer; Count: Longint): Longint; virtual; overload;
|
||||
function Write64(const Buffer: TBytes; Offset, Count: Int64): Int64;
|
||||
|
||||
function Seek(Offset: Longint; Origin: Word): Longint; virtual; overload;
|
||||
function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; virtual; overload;
|
||||
|
@ -40,6 +40,22 @@ begin
|
||||
Result:=Read(Buffer[aOffset],Count);
|
||||
end;
|
||||
|
||||
function TStream.Read64(Buffer: TBytes; aOffset, Count: Int64): Int64;
|
||||
|
||||
var
|
||||
r,t: Int64;
|
||||
begin
|
||||
t:=0;
|
||||
repeat
|
||||
r:=Count-t;
|
||||
if r>High(Longint) then r:=High(Longint);
|
||||
r:=Read(Buffer[aOffset],r);
|
||||
inc(t,r);
|
||||
inc(aOffset,r);
|
||||
until (t>=Count) or (r<=0);
|
||||
Result:=t;
|
||||
end;
|
||||
|
||||
function TStream.Write(const Buffer: TBytes; Offset, Count: Longint): Longint;
|
||||
begin
|
||||
Result:=Write(Buffer[Offset],Count);
|
||||
@ -56,6 +72,21 @@ begin
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
function TStream.Write64(const Buffer: TBytes; Offset, Count: Int64): Int64;
|
||||
var
|
||||
w,t: NativeInt;
|
||||
begin
|
||||
t:=0;
|
||||
repeat
|
||||
w:=Count-t;
|
||||
if w>High(Longint) then w:=High(Longint);
|
||||
w:=Write(Buffer[OffSet],w);
|
||||
inc(t,w);
|
||||
inc(Offset,W);
|
||||
until (t>=count) or (w<=0);
|
||||
Result:=t;
|
||||
end;
|
||||
|
||||
|
||||
function TStream.GetPosition: Int64;
|
||||
|
||||
@ -402,6 +433,7 @@ function TStream.ReadData(var Buffer: TExtended80Rec; Count: NativeInt): NativeI
|
||||
begin
|
||||
Result:=ReadMaxSizeData(Buffer,SizeOf(Buffer),Count);
|
||||
end;
|
||||
|
||||
{$ENDIF}
|
||||
|
||||
procedure TStream.ReadBuffer(var Buffer; Count: NativeInt);
|
||||
@ -579,6 +611,7 @@ procedure TStream.ReadBufferData(var Buffer: TExtended80Rec; Count: NativeInt);
|
||||
begin
|
||||
ReadExactSizeData(Buffer,SizeOf(Buffer),Count);
|
||||
end;
|
||||
|
||||
{$ENDIF}
|
||||
|
||||
procedure TStream.WriteBuffer(const Buffer; Count: NativeInt);
|
||||
|
Loading…
Reference in New Issue
Block a user