anchor.diff:  
       procedure SetAsString(const Value: String);
     public
  +    procedure CloneFrom(pvSource: TDValueItem; pvIgnoreValueTypes: TDValueDataTypes
  +        = [vdtInterface, vdtObject, vdtPtr]);
  +
       /// <summary>
       ///   Ϊ鷽ʽͬʱС
       ///    ֮ǰ鷽ʽᱻ
  
positive.code: 
  procedure CheckDValueSetArrayLength(ADValue: PDRawValue; ALen: Integer);
  
  procedure DValueSetAsString(ADValue:PDRawValue; pvString:String);
  function DValueGetAsString(ADValue:PDRawValue): string;
  
  
negative.code:   ClearDValue(@FRawValue);
  end;
  
  procedure TDValueItem.CloneFrom(pvSource: TDValueItem; pvIgnoreValueTypes:
      TDValueDataTypes = [vdtInterface, vdtObject, vdtPtr]);
  begin
    RawValueCopyFrom(@pvSource.FRawValue, @FRawValue, pvIgnoreValueTypes);
  end;
  
  function TDValueItem.Equal(pvItem:TDValueItem): Boolean;
  begin
    Result := CompareDValue(@FRawValue, @pvItem.FRawValue) = 0;
  