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;请大家帮忙看看为什么会错,有什么解决的好办法。
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;请大家帮忙看看为什么会错,有什么解决的好办法。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货