| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 674 人关注过本帖
标题:请教一下异常 Fatal error: Exception code=C0000005
只看楼主 加入收藏
weiyisc
Rank: 2
等 级:论坛游民
帖 子:103
专家分:14
注 册:2009-5-17
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:8 
请教一下异常 Fatal error: Exception code=C0000005
问题描述:
lpParameters=''
lpParameters='his_param_mode=3'
lpParameters=lpParameters+' url='+bllis_url
lpParameters=lpParameters+' rmkj_userno='+czybh
lpParameters=lpParameters+' his_param_dept='+ksbm
lpParameters=lpParameters+' his_param_ward='+ksbm
lpParameters=lpParameters+' his_param_patno='+ALLTRIM(zjkyzsy.zyh)
lpParameters=lpParameters+' inpdate='+strt(left(zjkyz.qstime,10),'.','-')
lpParameters=lpParameters+' outdate='+strt(left(zjkyz.qstime,10),'.','-')

Declare Integer ShellExecute In "Shell32.dll" Integer HWnd,String lpVerb,String lpFile,String lpParameters,String lpDirectory,Long nShowCmd
=Shellexecute(0,"Open",bllis_prog,lpParameters,"",1)
CLEAR DLLS

通过上面代码运行一个外部程序,在开发模式下面没问题。一到客户端下面就报错,不知道是什么问题引起的。

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册


请教给我了,先谢谢。。。
搜索更多相关主题的帖子: Exception 异常 Fatal String code 
2023-04-26 08:38
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:4 
C0000005大多是指针指向一个无效(或禁地)的地址时抛出的底层异常,这个异常虽然可以拦截,但并无有效的容错处理过程,基本上可以说是程序的中止。
有打开文件读写的情况时,打开文件后先检测文件的可读写性,文件句柄是否有效。
有分配内存或读写内存时,分配内存是否成功,检测要读写的内存块(段)是否可读写操作。


[此贴子已经被作者于2023-4-26 09:51编辑过]

2023-04-26 09:49
weiyisc
Rank: 2
等 级:论坛游民
帖 子:103
专家分:14
注 册:2009-5-17
收藏
得分:0 
以下是引用吹水佬在2023-4-26 09:49:39的发言:

C0000005大多是指针指向一个无效(或禁地)的地址时抛出的底层异常,这个异常虽然可以拦截,但并无有效的容错处理过程,基本上可以说是程序的中止。
有打开文件读写的情况时,打开文件后先检测文件的可读写性,文件句柄是否有效。
有分配内存或读写内存时,分配内存是否成功,检测要读写的内存块(段)是否可读写操作。


和VFP9.0运行类库有太大关系没有?
2023-04-26 10:33
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用weiyisc在2023-4-26 10:33:18的发言:

和VFP9.0运行类库有太大关系没有?

VFP调用自身的函数通常没问题, 但SYS()是例外,如SYS(2600,...)函数读写内存就有可能会抛出这个异常。
VFP程序出现C0000005大都是不正确调用API(或第三方接口模块)引起。
2023-04-26 11:58
东海ECS
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:Python
等 级:版主
威 望:32
帖 子:412
专家分:1646
注 册:2023-1-24
收藏
得分:4 
这个问题的错误代码C0000005表示是读取了非法的内存地址,通常与指针相关。可能原因之一是指针被释放或者未初始化,导致无法访问正确的内存地址。

在代码中,我注意到lpParameters是一个字符串类型的变量,但是在运行时没有被初始化。当你尝试连接字符串时,它可能会尝试访问未初始化的内存地址,导致程序崩溃。

建议对lpParameters初始化为一个空字符串,然后分别连接上其他字符串。例如:

lpParameters = "" lpParameters = lpParameters + 'his_param_mode=3' lpParameters = lpParameters + ' url=' + bllis_url lpParameters = lpParameters + ' rmkj_userno=' + czybh lpParameters = lpParameters + ' his_param_dept=' + ksbm lpParameters = lpParameters + ' his_param_ward=' + ksbm lpParameters = lpParameters + ' his_param_patno=' + ALLTRIM(zjkyzsy.zyh) lpParameters = lpParameters + ' inpdate=' + strt(left(zjkyz.qstime,10),'.','-') lpParameters = lpParameters + ' outdate=' + strt(left(zjkyz.qstime,10),'.','-')


另外,如果你是用Visual FoxPro编写的代码,可以考虑使用VFP已有的函数来执行外部程序,而不是调用Windows API。它们包括SHELLEXECUTE或者RUN等。这样更加方便和可靠,避免一些潜在的错误。

会当凌绝顶,一览众山小.
2023-04-26 19:11
nbwww
Rank: 8Rank: 8
等 级:贵宾
威 望:11
帖 子:332
专家分:804
注 册:2021-1-9
收藏
得分:4 
这位朋友还真的是有点
2023-04-26 19:30
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用nbwww在2023-4-26 19:30:35的发言:

这位朋友还真的是有点

就怕会变成机械人
2023-04-26 19:52
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:447
专家分:582
注 册:2013-5-14
收藏
得分:4 
以下是引用东海ECS在2023-4-26 19:11:44的发言:

这个问题的错误代码C0000005表示是读取了非法的内存地址,通常与指针相关。可能原因之一是指针被释放或者未初始化,导致无法访问正确的内存地址。

在代码中,我注意到lpParameters是一个字符串类型的变量,但是在运行时没有被初始化。当你尝试连接字符串时,它可能会尝试访问未初始化的内存地址,导致程序崩溃。

建议对lpParameters初始化为一个空字符串,然后分别连接上其他字符串。例如:

lpParameters = "" lpParameters = lpParameters + 'his_param_mode=3' lpParameters = lpParameters + ' url=' + bllis_url lpParameters = lpParameters + ' rmkj_userno=' + czybh lpParameters = lpParameters + ' his_param_dept=' + ksbm lpParameters = lpParameters + ' his_param_ward=' + ksbm lpParameters = lpParameters + ' his_param_patno=' + ALLTRIM(zjkyzsy.zyh) lpParameters = lpParameters + ' inpdate=' + strt(left(zjkyz.qstime,10),'.','-') lpParameters = lpParameters + ' outdate=' + strt(left(zjkyz.qstime,10),'.','-')

另外,如果你是用Visual FoxPro编写的代码,可以考虑使用VFP已有的函数来执行外部程序,而不是调用Windows API。它们包括SHELLEXECUTE或者RUN等。这样更加方便和可靠,避免一些潜在的错误。


回答的非常专业,估计 是GTP回答的,一般为读了空指针(理解的话就是那个指针地址VFP知道了,但这个指针地址在第三方你不知道的时候它就释放了,而你又要用VFP去读这个指针地址,然后就COOOOOO5,
《《《另外,如果你是用Visual FoxPro编写的代码,可以考虑使用VFP已有的函数来执行外部程序,而不是调用Windows API。。。。》》》这里说法跟你上面指针说法,牛头不对马嘴,GTP再强也只学习已知的有些逻辑它没有的。。。。。

[此贴子已经被作者于2023-4-26 21:17编辑过]

2023-04-26 21:12
weiyisc
Rank: 2
等 级:论坛游民
帖 子:103
专家分:14
注 册:2009-5-17
收藏
得分:0 
感谢各位,我在测试测试。
2023-04-26 22:04
快速回复:请教一下异常 Fatal error: Exception code=C0000005
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016361 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved