回复 3楼 mywisdom88
关于C0000005的一点想法
C0000005是Vfp的一硬伤,我写的一些小软件也时常被这个问题所困扰,在看了许多大侠关于C05的分析贴后,结合我自己的程序,发现在我的程序里,C000005总是由Edit控件引发的,我的程序里较多地用到了Edit,而且不是绑定的备注字段。避免使用Edit是避免C05错误的一个有效方法。但Edit有着Text无法替代的优势,我就用RichText做了一个类,为什么要做类呢?因为我发现:Richtext的边框颜色好像改不了,只能是默认的黑色,这与我表单上其它元素不协调,我便用一个自定义类,在类里用线条覆盖RichText的边框,间接实现了改变Richtext边框颜色。
用Richtext代替Edit后,我的程序到现在还没有出现C05,当然不知以后会不会出现。
我想问一下:
1.我的想法可行吗?用RichText代替Edit是不是解决C05的正确方法?
2.RichText的边框颜色能改吗?怎么改呢?
3.我在某大侠的帖子里看到:C05大多是内存溢出产生的,内存大的机器比内存小的机器出现机率低。我在主程序里还加入了这样一句:
SYS(3050, 1, VAL(SYS(3050, 1, 0)) * 1.5) && 调整内存缓冲区为它的缺省值的1.5倍
请问这一句有意义吗?会不会带来一些负作用?
------解决方案--------------------
2、RichText的边框颜色好像改变不了。
3、没有特意设置过。
------解决方案--------------------
同意3楼意见,C000005 不是 vfp 特有的,任何代码只要出现非法存取,都会触发 C05 错误
绝大多数情况下,vfp 中发生这种错误都是 vfp 运行库中的代码错误导致的,通常是存取越界造成的,而这个错误不是应用程序代码本身的错误,而 vfp 已停止更新,MS 不会修复这些问题,所以只能避开它。
1. 楼主用 richtextbox 来替代 editbox 是可以的,没什么不妥。如果不需要数据绑定的话,完全没问题,就算需要绑定表字段,自己扩展一下这个控件也可以实现数据绑定。
2. richeditbox 边框色没有简单的办法来改变,只能通过子类化窗口并截获重画消息来实现,这在 vfp 中也可以实现但不容易,得不偿失。将边框样式设成 0,再在下面放一个 shape 控件就可以简单达到目的了
3. 调整 sys(3050) 的设置对 c05 错误没有帮助,这个设置仅用于调整 vfp 作为活动或者非活动进程时占用的内存总量。
这是从连接中复制过来的内容。