如何在FoxPro中向ActiveX控件参数传递Null值
在FoxPro中向ActiveX控件方法传递Null字符串参数的问题
1. 注册ActiveX控件
执行以下命令注册DLL:
cd \windows\syswow64 regsvr32 "C:\mapp\mycontrol.dll"
2. 在FoxPro中创建控件对象
ofiscalprinter=CREATEOBJECT('mycontrol.Service.1')
3. 方法签名
命令窗口智能提示显示AX_SetAddInfoExt方法签名:
AX_SetAddInfoExt( aStatus as Number @, opts as Number, RegistrationNo as String, DocumentNumber as String, OtherDocumentNumber as String ) as Number
4. 传递Null的尝试及错误
尝试直接传递Null或类型转换的Null
astatus=0 ofiscalprinter.AX_SetAddInfoExt(@astatus,1,.null., .null., .null.) ofiscalprinter.AX_SetAddInfoExt(@astatus,1,CAST(NULL as C(1) null), CAST(NULL as C(1) null), CAST(NULL as C(1) null))
抛出错误:
OLE error code 0x80020005: Type mismatch.
尝试空字符串、CHR(0)等替代值
ofiscalprinter.AX_SetAddInfoExt(@astatus,1,CHR(0), CHR(0), CHR(0) ) ofiscalprinter.AX_SetAddInfoExt(@astatus,1,0, 0, 0) ofiscalprinter.AX_SetAddInfoExt(@astatus,1,'', '', '' ) ofiscalprinter.AX_SetAddInfoExt(@astatus,1,"", "", "" ) ofiscalprinter.AX_SetAddInfoExt(@astatus,1, [], [], [] ) ofiscalprinter.AX_SetAddInfoExt(@astatus,1,'1', '2', '3' )
抛出错误:
OLE error code 0x80004001: Not implemented.
问题需求
推测"Not implemented"错误是因为方法要求最后一个或两个参数必须为Null,而非Null的字符串参数可正常传递。现需解决:
- 如何在FoxPro中正确向该方法的字符串参数传递Null值?
- 是否可以通过FoxPro .NET wrapper从.NET调用该方法来绕过这个问题?
内容的提问来源于stack exchange,提问作者Andrus
相关产品推荐
相关产品推荐

