anchor.diff:  end;
   
   function TmCustomVirtualDataset.BookmarkValid(ABookmark: TBookmark): Boolean;
  -var
  -  tmpLongint : Longint;
  -begin
  -  Result := false;
  -  if Assigned(ABookmark) then
  -  begin
  -    tmpLongint := 0;
  -    Move(aBookmark, tmpLongint, BookmarkSize);
  -    if (tmpLongint >= 0) and (tmpLongint < RecordCount) then
  -      Result := True;
  -  end;
  -(*  if Assigned(ABookmark) and (PInteger(ABookmark)^ >= 0) and
  -    (PInteger(ABookmark)^ < RecordCount) then
  +begin
  +  if Assigned(ABookmark) and (PLongint(ABookmark)^ >= 0) and
  +    (PLongint(ABookmark)^ < RecordCount) then
       Result := True
     else
  -    Result := False;*)
  +    Result := False;
   end;
   
   procedure TmCustomVirtualDataset.BufferToVariant(AField: TField;
  
positive.code: end;
  
  procedure TmCustomVirtualDataset.InternalOpen;
  begin
    FInternalOpen := True;
    InternalFirst;
  
negative.code:       Result := 1
      else
      begin
        if PInteger(Bookmark1)^ < PInteger(Bookmark2)^ then
          Result := -1
        else if PInteger(Bookmark1)^ > PInteger(Bookmark2)^ then
          Result := 1
        else
          Result := 0;
      end;
    end;
  end;
  (*
  function TmCustomVirtualDataset.CompareBookmarks(Bookmark1, Bookmark2: TBookmark)
    : Integer;
  const
    RetCodes: array [Boolean, Boolean] of ShortInt = ((2, -1), (1, 0));
  
  begin
    Result := RetCodes[Bookmark1 = nil, Bookmark2 = nil];
    if Result = 2 then
    begin
      if PInteger(Bookmark1)^ < PInteger(Bookmark2)^ then
  