调用com写的dll方法,实现读IC卡数据的程序
我已用regsrv32将dll注册,接着定义卡结构
interface
// 接口定义 接口名称IRWCard
//接口IID {2DD111A-3EC9-4EFE-AFCD-B9FF66EB3456}
//组件名称 CardCOM
type
IRWCard = interface(IDispatch)
['{2DD111A-3EC9-4EFE-AFCD-B9FF66EB3456}']
function Read(out Data:OleVariant):WordBool; safeCall;
//function SetPort(AportID:Byte):WordBool; safeCall;
end;
//定义卡结构
Type TDataRec = record
CardCode: Byte;
CorpCode: Word;
CustID: LongWord;
SumBuy: LongWord;
Param1: Byte;
Param2: Byte;
Param3: Byte;
Param4: Byte;
Param5: Byte;
Param6: Byte;
Param7: Byte;
end;
之后,后来调用读方法:
procedure TfrmReadCard.btnWrCardClick(Sender: TObject);
//const
//IID_IMalloc: TGUID = '{2DD1EE3A-3EC9-4F5E-A9CD-B98366EB3456}';
var
MCard :OleVariant;
CustID: OleVariant;
iter: IRWCard;
begin
// iter := CreateComObject(IID_IMalloc);
// IRWCard.SetPort(4);
MCard:=iter.Read(CustID);
//Memo1.Lines.Add(MCard);
end;
提示错误
read Of address '00000000'