+ Fix for datasets with a Recordsize which will not fit in a word

git-svn-id: trunk@4086 -
This commit is contained in:
joost 2006-07-02 23:07:24 +00:00
parent 138621c569
commit 4f93bec6e6

View File

@ -160,12 +160,12 @@ begin
if Result = grOK then
begin
with PBufBookmark(Buffer + RecordSize)^ do
with PBufBookmark(Buffer + FRecordSize)^ do
begin
BookmarkData := FCurrentRecBuf;
BookmarkFlag := bfCurrent;
end;
move((pointer(FCurrentRecBuf)+sizeof(TBufRecLinkItem))^,buffer^,RecordSize);
move((pointer(FCurrentRecBuf)+sizeof(TBufRecLinkItem))^,buffer^,FRecordSize);
end
else if (Result = grError) and doCheck then
DatabaseError('No record');
@ -190,27 +190,27 @@ end;
procedure TBufDataset.InternalSetToRecord(Buffer: PChar);
begin
FCurrentRecBuf := PBufBookmark(Buffer + RecordSize)^.BookmarkData;
FCurrentRecBuf := PBufBookmark(Buffer + FRecordSize)^.BookmarkData;
end;
procedure TBufDataset.SetBookmarkData(Buffer: PChar; Data: Pointer);
begin
PBufBookmark(Buffer + RecordSize)^.BookmarkData := pointer(Data^);
PBufBookmark(Buffer + FRecordSize)^.BookmarkData := pointer(Data^);
end;
procedure TBufDataset.SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag);
begin
PBufBookmark(Buffer + RecordSize)^.BookmarkFlag := Value;
PBufBookmark(Buffer + FRecordSize)^.BookmarkFlag := Value;
end;
procedure TBufDataset.GetBookmarkData(Buffer: PChar; Data: Pointer);
begin
pointer(Data^) := PBufBookmark(Buffer + RecordSize)^.BookmarkData;
pointer(Data^) := PBufBookmark(Buffer + FRecordSize)^.BookmarkData;
end;
function TBufDataset.GetBookmarkFlag(Buffer: PChar): TBookmarkFlag;
begin
Result := PBufBookmark(Buffer + RecordSize)^.BookmarkFlag;
Result := PBufBookmark(Buffer + FRecordSize)^.BookmarkFlag;
end;
procedure TBufDataset.InternalGotoBookmark(ABookmark: Pointer);
@ -440,7 +440,7 @@ begin
begin
if UpdateKind = ukModify then
begin
move(pchar(OldValuesBuffer+sizeof(TBufRecLinkItem))^,pchar(BookmarkData+sizeof(TBufRecLinkItem))^,RecordSize);
move(pchar(OldValuesBuffer+sizeof(TBufRecLinkItem))^,pchar(BookmarkData+sizeof(TBufRecLinkItem))^,FRecordSize);
FreeRecordBuffer(OldValuesBuffer);
end
else if UpdateKind = ukDelete then
@ -577,7 +577,7 @@ begin
FFirstRecBuf := FCurrentRecBuf;
// Link the newly created record buffer to the newly created TDataset record
with PBufBookmark(ActiveBuffer + RecordSize)^ do
with PBufBookmark(ActiveBuffer + FRecordSize)^ do
begin
BookmarkData := FCurrentRecBuf;
BookmarkFlag := bfInserted;
@ -599,7 +599,7 @@ begin
begin
// Update the oldvalues-buffer
FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := intAllocRecordBuffer;
move(FCurrentRecBuf^,FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer^,RecordSize+sizeof(TBufRecLinkItem));
move(FCurrentRecBuf^,FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer^,FRecordSize+sizeof(TBufRecLinkItem));
FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind := ukModify;
end
else
@ -608,7 +608,7 @@ begin
CurrBuff := pchar(FCurrentRecBuf);
inc(Currbuff,sizeof(TBufRecLinkItem));
move(ActiveBuffer^,CurrBuff^,RecordSize);
move(ActiveBuffer^,CurrBuff^,FRecordSize);
end;
procedure TBufDataset.CalcRecordSize;