* Implemented TBufDataset.Packetrecord

git-svn-id: trunk@2842 -
This commit is contained in:
joost 2006-03-10 20:46:48 +00:00
parent 01bfed76e3
commit 5f801f2b42
3 changed files with 26 additions and 19 deletions

View File

@ -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;

View File

@ -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 }

View File

@ -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