anchor.diff:  {$ENDIF}
   
   finalization
  -{$IFDEF DELPHI7_UP}
     Variants.VarDispProc := OldVarDispProc;
  -{$ENDIF}
     FreeAndNil(VarObjectType);
   
   end.
  
positive.code: end;
  
  initialization
  {$IFDEF DELPHI7_UP}
    OldVarDispProc := Variants.VarDispProc;
    Variants.VarDispProc := @IntfDispInvoke;
  {$ENDIF}
    VarObjectType := TVarObjectType.Create;
    varObject := VarObjectType.VarType;
  
  
negative.code:       CallDesc: PCallDesc; Params: Pointer); cdecl;
  begin
    if TVarData(Source).VType=varUnknown then
  {$IFDEF DELPHI6}
      VarObjectType.DispInvoke(PVarData(Dest)^, TVarData(Source), CallDesc, Params)
  {$ELSE}
      VarObjectType.DispInvoke(PVarData(Dest), TVarData(Source), CallDesc, Params)
  {$ENDIF}
    else if Assigned(OldVarDispProc) then
      OldVarDispProc(Dest, Source, CallDesc, Params)
    else
      raise exception.Create('Variant method calls not supported');
  end;
  
  function ListSplit(ListClass: TListClass; Str: string;
    const Separator: string; Limit: Integer; TrimItem: Boolean;
  