|
@@ -36,18 +36,20 @@ type
|
|
|
FieldNo : integer;
|
|
|
OrgBufID: integer;
|
|
|
Buffer : pointer;
|
|
|
- Size : ptrint;
|
|
|
+ Size : PtrInt;
|
|
|
end;
|
|
|
|
|
|
TBufBlobStream = class(TStream)
|
|
|
private
|
|
|
FBlobBuffer : PBlobBuffer;
|
|
|
- FPosition : ptrint;
|
|
|
+ FPosition : PtrInt;
|
|
|
FDataset : TCustomBufDataset;
|
|
|
protected
|
|
|
function Read(var Buffer; Count: Longint): Longint; override;
|
|
|
function Write(const Buffer; Count: Longint): Longint; override;
|
|
|
- function Seek(Offset: Longint; Origin: Word): Longint; override;
|
|
|
+ function Seek(const Offset: int64; Origin: TSeekOrigin): int64; override;
|
|
|
+ function GetPosition: Int64; override;
|
|
|
+ function GetSize : Int64; override;
|
|
|
public
|
|
|
constructor Create(Field: TBlobField; Mode: TBlobStreamMode);
|
|
|
end;
|
|
@@ -2390,17 +2392,27 @@ begin
|
|
|
ABlobBuffer := Nil;
|
|
|
end;
|
|
|
|
|
|
-function TBufBlobStream.Seek(Offset: Longint; Origin: Word): Longint;
|
|
|
+function TBufBlobStream.Seek(const Offset: int64; Origin: TSeekOrigin): int64;
|
|
|
|
|
|
begin
|
|
|
Case Origin of
|
|
|
- soFromBeginning : FPosition:=Offset;
|
|
|
- soFromEnd : FPosition:=FBlobBuffer^.Size+Offset;
|
|
|
- soFromCurrent : FpoSition:=FPosition+Offset;
|
|
|
+ soBeginning : FPosition:=Offset;
|
|
|
+ soEnd : FPosition:=FBlobBuffer^.Size+Offset;
|
|
|
+ soCurrent : FpoSition:=FPosition+Offset;
|
|
|
end;
|
|
|
Result:=FPosition;
|
|
|
end;
|
|
|
|
|
|
+function TBufBlobStream.GetPosition: Int64;
|
|
|
+begin
|
|
|
+ Result:=FPosition;
|
|
|
+end;
|
|
|
+
|
|
|
+function TBufBlobStream.GetSize: Int64;
|
|
|
+begin
|
|
|
+ Result:=FBlobBuffer^.Size;
|
|
|
+end;
|
|
|
+
|
|
|
|
|
|
function TBufBlobStream.Read(var Buffer; Count: Longint): Longint;
|
|
|
|