Foxtable(狐表)用户栏目专家坐堂 → 报错如何解决


  共有2350人关注过本帖树形打印复制链接

主题:报错如何解决

帅哥哟,离线,有人找我吗?
nxqtxwz
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
报错如何解决  发帖心情 Post By:2018/9/9 18:39:00 [只看该作者]

请问我的系统中有用摄像头拍照的功能,但有的电脑上没有摄像头就会出现下面的错误提示,怎么能让它不提示呢?

 

 

.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2018.9.9.1
错误所在事件:项目,AfterOpenProject
详细错误信息:
“UserCode”的类型初始值设定项引发异常。
No devices of the category


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/9 19:59:00 [只看该作者]

提示这个错误【No devices of the category】,说明电脑上没有摄像头。

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=84349&skin=0

 

如果是win10的电脑,有可能不能调用摄像头,还一种方式试试

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=93741

 


 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2018/9/10 22:16:00 [只看该作者]

我按老师的指导中第一个例子改了全局变量和内部函数,启动时正常了。但在照相是如果没有摄像头会提示:没有摄像头,然后报错:

.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2018.9.9.1
错误所在事件:窗口,拍照,AfterLoad
详细错误信息:
InvalidArgument=“0”的值对于“index”无效。
参数名: index

 

窗口,拍照,AfterLoad的代码是:


 

Dim camList As WinForm.ComboBox = e.Form.Controls("CamList")
'设置控件大小
Functions.Execute("SetCamBoxSize",e.Form,True)
'设置移动条
e.Form.Controls("BarX").Value = e.Form.Controls("LineBox").Left - e.Form.Controls("CamViewBox").Left
e.Form.Controls("BarY").Value = e.Form.Controls("CamViewBox").Height - (e.Form.Controls("LineBox").Top - e.Form.Controls("CamViewBox").Top)
e.Form.Controls("BarW").Value = e.Form.Controls("LineBox").Width
e.Form.Controls("BarH").Value = e.Form.Controls("CamViewBox").Height - e.Form.Controls("LineBox").Height
'显示拍照框尺寸
e.Form.Controls("BoxW").Value = e.Form.Controls("LineBox").Width
e.Form.Controls("BoxH").Value = e.Form.Controls("LineBox").Height
_lVars(0) = e.Form.Controls("AutoTake").Checked
'设置保存路径
If _sVars(0) <> ""
    e.Form.Controls("FileName").Value = _sVars(0)
End If
'获取摄像头列表
Functions.Execute("GetCams")
'显示摄像头列表
Dim i As Integer
camList.Items.Clear
For i=0 To _CamList.Count - 1
    camList.Items.Add(_CamList(i))
Next
'默认选中第一个摄像头
If _CamList.Count > 1 And _CamIndex < 1
    _CamIndex = 1
End If
camList.SelectedIndex = _CamIndex
'激活预览
If _CamList.Count > 0
    Functions.Execute("SetCamView",_CamIndex,e.Form.Controls("CamView"))
Else
    MessageBox.Show("未检测摄像头,请先连接摄像头!","警告")
    e.Form.Close()
End If
'启动定时器
_iVars(0) = 0
e.Form.TimerEnabled = True


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:108540 积分:552183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/10 22:41:00 [只看该作者]

http://www.foxtable.com/webhelp/scr/1485.htm

看看是哪一句代码出错

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/11 9:21:00 [只看该作者]

AfterLoad 事件那里,不是可以判断是否有摄像头?如果没有,就把窗口关闭。

 

或者是,直接就不要把拍照窗口打开了。直接提示没有摄像头。


 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2018/9/16 17:01:00 [只看该作者]

报错的问题解决了,但没有摄像头的提示出现后,如果点确定或直接关闭提示窗口,项目就处于静止状态,点哪都不动了。必须退出或点一下项目图标才能正常,是不是没有完全退出拍照窗口呢。

 

If _CamList.Count > 0
    Functions.Execute("SetCamView",_CamIndex,e.Form.Controls("CamView"))
Else
    MessageBox.Show("未检测摄像头,请先连接摄像头!","警告")
    e.Form.Close()
End If
'启动定时器
_iVars(0) = 0
e.Form.TimerEnabled = True


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/16 17:53:00 [只看该作者]

我这样测试没问题

 

If _CamList.Count = 0 Then
    e.Form.close
    Return
End If

Dim camList As WinForm.ComboBox = e.Form.Controls("CamList")
'设置控件大小
Functions.Execute("SetCamBoxSize",e.Form,True)
'设置移动条
e.Form.Controls("BarX").Value = e.Form.Controls("LineBox").Left - e.Form.Controls("CamViewBox").Left
e.Form.Controls("BarY").Value = e.Form.Controls("CamViewBox").Height - (e.Form.Controls("LineBox").Top - e.Form.Controls("CamViewBox").Top)
e.Form.Controls("BarW").Value = e.Form.Controls("LineBox").Width
e.Form.Controls("BarH").Value = e.Form.Controls("CamViewBox").Height - e.Form.Controls("LineBox").Height
'显示拍照框尺寸
e.Form.Controls("BoxW").Value = e.Form.Controls("LineBox").Width
e.Form.Controls("BoxH").Value = e.Form.Controls("LineBox").Height
_lVars(0) = e.Form.Controls("AutoTake").Checked
'设置保存路径
If _sVars(0) <> ""
    e.Form.Controls("FileName").Value = _sVars(0)
End If
'获取摄像头列表
Functions.Execute("GetCams")
'显示摄像头列表
Dim i As Integer
camList.Items.Clear
For i=0 To _CamList.Count - 1
    camList.Items.Add(_CamList(i))
Next
'默认选中第一个摄像头
If _CamList.Count > 1 And _CamIndex < 1
    _CamIndex = 1
End If
camList.SelectedIndex = _CamIndex
'激活预览
If _CamList.Count > 0
    Functions.Execute("SetCamView",_CamIndex,e.Form.Controls("CamView"))
Else
    MessageBox.Show("未检测摄像头,请先连接摄像头!","警告")
    e.Form.Close()
End If
'启动定时器
_iVars(0) = 0
e.Form.TimerEnabled = True


 回到顶部