救命:程序原在WIN2000,WIN98都可以运行,现在WIN98下一运行就死机(200分)

  • 主题发起人 主题发起人 zhtx
  • 开始时间 开始时间
Z

zhtx

Unregistered / Unconfirmed
GUEST, unregistred user!
救命:我在WIN2000下编的程序,原来在WIN2000,WIN98都可以运行,昨天作了些小改动,增加了
一个FORM,改动了一个FRAME,再在WIN98下一运行就死机,出现RUNTIME 217错误,
经检查发现在Application.Initialize就出错,将主程序使用的自编UNIT全部去掉则正常,
但采用排他法,发现有很多自编的UNIT如果保留则出错,但这些UNIT我都没改过啊,真是
百思不得其解,请各位大侠帮帮忙,推测推测可能是哪里出问题,万分感谢!
注:我是懒人,用了大量的控件,但全部都是带源代码的,没有ACTIVEX控件,也不用BDE,用
的是DBISAM,故DLL,BDE这些因素应该不是原因
 
补充:win2000下仍然正常运行
 
主程序使用的自编Unit什么意思?
 
是我自己编的单元啊,主程序中不是自动USE,指明在那个文件中的吗
我昨天又将老的原来可以在WIN98下正常运行的备份恢复,
可还是只能在WIN2000中运行,不能在WIN98下运行,真是见鬼了.
现在的系统与老的唯一不同是我曾经安装DBISAM 3.13版,可我已经卸载此版本,删除BPL,
重新安装了原来安装的3.07版,可还是老样子.
 
重装下98试试
 
找个干净的98试试
 
我换了好几台WIN98都是这样啊,而且这些WIN98这两天什么也没装个啊
 
应该不是98的问题,,,

你看看一下你的那些控件,,,是不是有操作系统的限制,,,在2000上做的东西,,用到了
很多的api,这些api是有操作系统的限制的,,他们有的不支持98,有的只支持2000以上的
版本,,,如果你要实现相同的功能,,你需要用支持98的函数,,

我只是提出了一个可能性,,,具体是怎么的,,因为不知道你的东东,,,所以拿不准了,
 
你的所谓的自编的Unit是否指不在Delphi的IDE环境中对这些文件进行修改?如果是这样的
话,原因就很明了,Delphi在运行时不会再去编译那些它认为没有改动过的文件,而只有
在它的IDE环境中作过更改的文件,它才会认为已经改动过。而你的情况恰恰是你对文件作
了改动而Delphi认为没有改动,所有才会出现上述错误。解决的办法一是删除那些相关的
dcu文件,这样Delphi找不到这些文件,就会自动重新编译。另一个办法是运行菜单的
project-Build All,这个命令将不会比较文件的变动,而将所有文件都重新编译一遍,这
样就不会出错了。
 
HeyTommy:你所说的有可能,但我用的这些控件一直都在用,前几天还运行正常,唯一改动的
控件我已卸载新版本,删除新版本的BPL,重装老版本,可还是照旧.
HunterTeam:我已试过BUILD ALL但还是老样子,而且在WIN2000下独立执行是可以的,应该
不是这方面的问题
 
RUNTIME 217 错误的含义是“控制-C”错误,,是致命错误,,,和被0除、溢出等错误是同
一类错误!
 
我想是你的其它的地方有问题,,,所以才会出现这个致命错误,,,,但具体我就没法了,
如果你可以贴出部分代码,,,大家可以讨论一下!
 
HeyTommy:
RUNTIME 217 错误的含义是“控制-C”错误这个是手册上的说法,但实际是
错误的,正确的是该错误发生在SYSUTILS初始时或初始完毕后,在此时DELPHI还没有
接管错误处理.
贴出代码估计也没用,因为我现在的代码已恢复到出错前正常运行时的代码,我估计错误
可能隐藏在某个第三方控件内,但现在第三方控件我已全部恢复到原来正常运行的状态,
可还是不行.而且我用快速查看,看了程序内部调用的DLL表,这些DLL在WIN98中全部存在,
故也不存在调用不存在的DLL的原因.
 
问题找到,是我新增的一个国产控件初始时分配CURSOR出了问题,将此语句删除OK,
此语句在WIN2000下和小程序中都不出问题,所以很难找,我是最后一狠心,找台WIN98
的机器将DELPHI和一大堆控件装了一遍,实地跟踪测试才发现.
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
后退
顶部