TUnitInf = class(TRemotable)
  private
    FUnitID: String;
    FUnitName: String;
    FBelongID: String;
    FUnitMark: String;
    FDes: String;
    FUnitLever: String;
    FUnitAdd: String;
  published
    property UnitID: String read FUnitID write FUnitID;
    property UnitName: String read FUnitName write FUnitName;
    property BelongID: String read FBelongID write FBelongID;
    property UnitMark: String read FUnitMark write FUnitMark;
    property Des: String read FDes write FDes;
    property UnitLever: String read FUnitLever write FUnitLever;
    property UnitAdd: String read FUnitAdd write FUnitAdd;
  end;  
 var
   i, iLen: integer;
   unitinf  : TUnitInf;
   unitArr  : Variant;
begin
   iLen := LV_Unit.Items.Count;   unitArr:=varArrayCreate([0,ilen-1],varByte);//创建动态数组  
   for i := 0 to iLen-1 do
   begin
      unitInf := TUnitInf.Create;
      unitinf.UnitID := LV_Unit.Items[i].Caption;
      unitinf.UnitName := LV_Unit.Items[i].SubItems[0];
      unitinf.UnitLever := LV_Unit.Items[i].SubItems[1];
      unitArr[i] := unitinf;//出错
   end;
end;错误提示:Incompatible types:'variant' and 'TUnitInf'。
请大家帮我看看,到底为什么错了?应该如何修改?

解决方案 »

  1.   

    Variant不能代表指针和类,建议将Variant数组改TUnitInf数组。
      

  2.   

    改为数组是好的,但是我必须要用variant,因为存储过程的参数值支持variant,不支持数组
      

  3.   

    http://borland.mblogger.cn/aiirii/posts/12204.aspx
      

  4.   

    你的存儲過程取得TUnitInf的實例有什麼用呀.
      

  5.   

    unitArr  : Array[0..99] of TUnitInf;  for i:= 0 to 99 do
      begin
        unitArr  [i] := nil;
         end;
      

  6.   

    to  lovezhihua(优华无限):
    我的存储过程要根据用户选中的单位(TUnitInf),查询出这些用户的信息,进行比较