mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 13:59:28 +02:00
* Implemented TBufDataset.Packetrecord
git-svn-id: trunk@2842 -
This commit is contained in:
parent
01bfed76e3
commit
5f801f2b42
@ -23,10 +23,16 @@ begin
|
||||
Inherited Create(AOwner);
|
||||
SetLength(FUpdateBuffer,0);
|
||||
BookmarkSize := sizeof(TBufBookmark);
|
||||
// temporary set it here
|
||||
FPacketRecords := 10;
|
||||
end;
|
||||
|
||||
procedure TBufDataset.SetPacketRecords(aValue : integer);
|
||||
|
||||
begin
|
||||
if aValue > 0 then FPacketRecords := aValue
|
||||
else DatabaseError(SInvPacketRecordsValue);
|
||||
end;
|
||||
|
||||
destructor TBufDataset.Destroy;
|
||||
|
||||
begin
|
||||
@ -295,26 +301,23 @@ var i : integer;
|
||||
|
||||
begin
|
||||
i := 0;
|
||||
if FPacketRecords > 0 then
|
||||
if FBBufferCount < FBRecordCount+FPacketRecords then
|
||||
begin
|
||||
if FBBufferCount < FBRecordCount+FPacketRecords then
|
||||
begin
|
||||
FBBufferCount := FBBuffercount + FPacketRecords;
|
||||
ReAllocMem(FBBuffers,FBBuffercount*SizeOf(PChar));
|
||||
end;
|
||||
|
||||
repeat
|
||||
FBBuffers[FBRecordCount+i] := AllocRecordBuffer;
|
||||
b := (loadbuffer(FBBuffers[FBRecordCount+i])<>grOk);
|
||||
inc(i);
|
||||
until (i = FPacketRecords) or b;
|
||||
if b then
|
||||
begin
|
||||
dec(i);
|
||||
FreeRecordBuffer(FBBuffers[FBRecordCount+i]);
|
||||
end;
|
||||
FBRecordCount := FBRecordCount + i;
|
||||
FBBufferCount := FBBuffercount + FPacketRecords;
|
||||
ReAllocMem(FBBuffers,FBBuffercount*SizeOf(PChar));
|
||||
end;
|
||||
|
||||
repeat
|
||||
FBBuffers[FBRecordCount+i] := AllocRecordBuffer;
|
||||
b := (loadbuffer(FBBuffers[FBRecordCount+i])<>grOk);
|
||||
inc(i);
|
||||
until (i = FPacketRecords) or b;
|
||||
if b then
|
||||
begin
|
||||
dec(i);
|
||||
FreeRecordBuffer(FBBuffers[FBRecordCount+i]);
|
||||
end;
|
||||
FBRecordCount := FBRecordCount + i;
|
||||
result := i;
|
||||
end;
|
||||
|
||||
|
@ -1515,6 +1515,7 @@ type
|
||||
function GetFieldSize(FieldDef : TFieldDef) : longint;
|
||||
function GetRecordUpdateBuffer(rno : integer;var RecUpdBuf : PRecUpdateBuffer) : boolean;
|
||||
function GetFieldUpdateBuffer(fieldno : integer;RecUpdBuf : PRecUpdateBuffer;var FieldUpdBuf : pFieldUpdateBuffer) : boolean;
|
||||
procedure SetPacketRecords(aValue : integer);
|
||||
protected
|
||||
procedure SetRecNo(Value: Longint); override;
|
||||
function GetRecNo: Longint; override;
|
||||
@ -1557,6 +1558,8 @@ type
|
||||
procedure ApplyUpdates; virtual;
|
||||
procedure CancelUpdates; virtual;
|
||||
destructor Destroy; override;
|
||||
published
|
||||
property PacketRecords : Integer read FPacketRecords write FPacketRecords default 10;
|
||||
end;
|
||||
|
||||
{ TParam }
|
||||
|
@ -75,6 +75,7 @@ Const
|
||||
SNoParseSQL = '%s is only possible if ParseSQL is True';
|
||||
SLookupInfoError = 'Lookup information for field ''%s'' is incomplete';
|
||||
SUnsupportedFieldType = 'Fieldtype %s is not supported';
|
||||
SInvPacketRecordsValue = 'PacketRecords has to be larger then 0';
|
||||
|
||||
Implementation
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user