[fpc-devel] [Fwd: TMemDataset : pb & suggestions]
    Oro06 
    orinaudo at gmail.com
       
    Sat Oct  7 18:14:16 CEST 2006
    
    
  
it seems that using move func give better results.
replacing this
function TMemDataset.GetBookmarkFlag(Buffer: PChar): TBookmarkFlag;
begin
  Result:=PRecInfo(Buffer+FRecInfoOffset)^.BookmarkFlag;
end;
by this :
function TMemDataset.GetBookmarkFlag(Buffer: PChar): TBookmarkFlag;
var ARecInfo: TMTRecInfo;
begin
  Move(PRecInfo(Buffer+FRecInfoOffset)^,ARecInfo,FRecInfoSize);
  Result:=ARecInfo.BookmarkFlag;
end;
same for TMemDataset.SetBookmarkFlag...
procedure TMemDataset.SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag);
var APRecInfo: PRecInfo;
    ARecInfo: TMTRecInfo;
begin
  //Unaligned(PRecInfo(Buffer+FRecInfoOffset)^).BookmarkFlag := Value;
  APRecInfo:=PREcInfo(Buffer+FRecInfoOffset);
  Move(APRecInfo^,ARecInfo,FRecInfoSize);
  ARecInfo.BookmarkFlag:=Value;
  Move(ARecInfo,APRecInfo^,FRecInfoSize);
end;
regards
or
    
    
More information about the fpc-devel
mailing list