anchor.diff:    SysUtils,
     mUtility;
   
  +type
  +  TDatumShell = class
  +  public
  +    Datum : IVDDatum;
  +    Idx : integer;
  +  end;
  +
   
   { TReadOnlyVirtualDatasetProvider }
   
  
positive.code:   inherited Create;
    FSortedIndex := TFPList.Create;
    FCurrentSortFields := TStringList.Create;
  
  end;
  
  destructor TReadOnlyVirtualDatasetProvider.Destroy;
  begin
    FSortedIndex.Free;
    FCurrentSortFields.Free;
    inherited Destroy;
  end;
  
  
negative.code:     else
      begin
        FSortedIndex.Clear;
        FGarbage.Clear;
        for i := 0 to Self.GetRecordCount -1 do
        begin
          tmp := TDatumShell.Create;
          FGarbage.Add(tmp);
          tmp.Datum := FIDataProvider.GetDatum(i);
          tmp.Idx:= i;
          FSortedIndex.Add(tmp);
        end;
        FCurrentSortConditions := aConditions;
        FCurrentSortFields.Clear;
        for i := 0 to aConditions.Count - 1 do
  