type
 ATTGUARDRECORD=record
    tPersonID:TUserDef7 ;
    nYear:integer ;
    nMonth:integer ;
    nDay:integer ;
    nHour:integer ;
    nMinute:integer ;
    nSecond:integer ;
    bOnDuty:integer ;
    bBC:integer ;
    nAdr:integer ;
  end ;TRecord = array of  ATTGUARDRECORD  ;COM服务器端function THD4EKM.GetRecord(handleDevice: OLE_HANDLE;
  var ATTGUARDREC: OleVariant): ReturnInfo;
var HD4EKM: TDllCall; ReturnInformation: ReturnInfo; Rec: TRecord;
    recordCount,i:Integer;
begin
  Result.Success := False;
  Result.info := '未知错误';
  HD4EKM := TDllCall.Create;
  try
    if LoadHD4EDll(HD4EKM) then
    begin
      HD4EKM.nMyAdr := 001;
      if ConnectDevice(HD4EKM, HD4EKM.nMyAdr, FMacCommDef, handleDevice) then
      begin
        HD4EKM.nTagAdr:=FMacAddress;
        HD4EKM.nInfoReturn := integer(nFail);
        HD4EKM.lpSetWaitTime(HD4EKM.m_pDevice, 2000);
        Result := GetRecordA(HD4EKM, Rec);
        recordCount:=Result.RecCount;
        ATTGUARDREC:=Rec;  //错误信息:invalid variant type conversion
      end
      else
    end
    else
      Result.info := '加载文件ICDM_id.dll失败,文件不存在或者已损坏。'
  finally
  end;
end;Client:procedure TForm1.Button6Click(Sender: TObject);
var HD4EKM:IHD4EKM;rec:TRecord;RturnInfo:ReturnInfo; oleRec:OleVariant;
begin
  //leRec:=VarArrayCreate([0,199],varVariant);
   HD4EKM:=CoHD4EKM.Create;
   HD4EKM.SetMacAddress(18);
   HD4EKM.SetComDef('COM1:baud=38400,parity=N,data=8,stop=1');
   RturnInfo:=HD4EKM.GetRecord(Handle,oleRec);
end;请大家帮忙看看为什么会错,有什么解决的好办法。