关于error返回值的问题
把下面这个代码放在form.init里面,初始化的时候就判断端口号时候可以打开。
ON ERROR Do CommErrorHandle WITH ERROR(),MESSAGE( )
For i = 1 To 4
thisform.comcrl.CommPort = i &&指定端口号
thisform.comcrl.portOpen = .T. &&尝试打开
Next
ON ERROR
***CommErrorHandle.prg*****
PROCEDURE CommErrorHandle
PARAMETER nError,mess
CLEAR
? 'Error number: '+ ALLTRIM(STR(nError))
? mess
ENDPROC
nError返回值为什么是0??mess显示是“端口号无效”
[解决办法]
1429 是 vfp 的错误号,表示 OLE 类型的错误
要获取原始错误号,可在 CommErrorHandle 中用 aerror 来获取,详情参考 aerror 函数的帮助内容
PROCEDURE CommErrorHandle
PARAMETER nError,mess
if inlist(nError,1427,1429)
local atemp[1]
aerror(atemp)
? aTemp[7]
? aTemp[3]
else
CLEAR
? 'Error number: '+ ALLTRIM(STR(nError))
? mess
endif
ENDPROC