都是98惹的祸(200分)

  • 主题发起人 主题发起人 min_kuan
  • 开始时间 开始时间
M

min_kuan

Unregistered / Unconfirmed
GUEST, unregistred user!
我用D5开发了一个较大型的系统,用的是ADO和SQL2000,系统打上了MDAC2.7的补丁和D5自己的补丁,系统在W2000上开发编译。一切的一切在W2000上都非常顺畅,但是,当我安装到98下时什么问题都出现了:动态导入图片时“非法操作”、打开窗体失败、退出程序后“非法操作”、MEMO控件报“内存不足”……每次的操作出现的情况都不一样,天哪,这是怎么回事??然而,同为一个版本的98的另一机器,在没有MDAC2.7之前仅是数据删除出错和退出系统出错,补丁一上问题纷至。类似的问题,我以前在用ODBC做连接时也发现过当系统有连过数据库,退出就会报“非法操作”,而且只有部分98和WinME会。(统计数据,十台独立安装的WIN98会有6台以上有上述情况)
我已经头大了,各位高手,有请了!!!!
 
建议在98下编译!一般来讲在低版本系统中编译的程序在高版本系统中运行出错的可能性
比在高版本系统中编译的程序在低版本系统中运行出错的可能性要小得多。我有同样的经
历。
 
在98下编译后运行时就会出错,用调试器跟踪会死机!
 
在下安装Mdac2.7试试
 
安装MDAC2.7比2.1的问题还多
 
几乎是一定有的事,若到winnt下运行就不会有事,所以现在开发程序如果不是一定的话在win9x下写的才能保证兼容性
主要原因有几个1、字符集不同(体现为乱玛)
2、像你说的一样的未知问题(一般是使用了windows的api即使win9x下有此函数,而他们本身就不兼容)
3、根本就不运行(比上面更严重)
还有就是编译器和内存控制方面的问题。winnt为没个进程单独分配4G空间,win9x是所有的进程共享4G空间(系统分配)等众多的问题
到win9x下重新编译了。


 
建议不要用Mdac2.7,好象最近看到因为它出错的情况比较多,还是用D5自带的2.6吧!
 
似乎你发了两次?我在另一个帖子上说了我的一点看法,我觉得不仅仅是ADO的问题
动态导入图片时“非法操作”、打开窗体失败、退出程序后“非法操作”、MEMO控件报“内存不足
这些肯定不是ADO的问题。
我们的程序也很大很消耗内存,可是在这些方面从来没有问题的。
 
所以我一直都在用98,虽然我讨厌98,但为了写程序,没办法的事。
说真的,我左看右看都觉得2K比98强许多。
 
来自:louhong, 时间:2002-9-29 17:00:00, ID:1353755 | 编辑
建议在低版本的操作系统即98下编译。因为在低版本的操作系统下编译的程序在高版本操作系统
下运行的出错机率比在高版本的操作系统下编译的程序在低版本操作系统下运行的小得多。我有
过类似经历。


来自:c2008, 时间:2002-9-29 17:09:00, ID:1353783 | 编辑
几乎是一定有的事,若到winnt下运行就不会有事,所以现在开发程序如果不是一定的话在win9x下写的才能保证兼容性
主要原因有几个1、字符集不同(体现为乱玛)
2、像你说的一样的未知问题(一般是使用了windows的api即使win9x下有此函数,而他们本身就不兼容)
3、根本就不运行(比上面更严重)
还有就是编译器和内存控制方面的问题。winnt为没个进程单独分配4G空间,win9x是所有的进程共享4G空间(系统分配)等众多的问题
到win9x下重新编译了。



来自:savetime, 时间:2002-9-29 17:12:00, ID:1353793 | 编辑
听人说高版本MDAC有些问题,建议用2.6以下


来自:shenloqi, 时间:2002-9-29 17:13:00, ID:1353797 | 编辑
我的经验是:
1。不允许用户开很多的窗口(尤其是控件多的)
2.检查是否有内存泄漏。
3.不要使用替代Delphi的内存管理器,他只适合在小程序或调试期使用。
4。到非要创建对象不可时再创建


来自:szf, 时间:2002-9-29 16:02:00, ID:1353626 | 编辑
由于在程序中没有考虑的系统资源分配问题(该问题在WIN9X里由来以久,但NT和2K已经
基本克服),座席程序上使用了大量的界面资源,而且没有用的资源也生成在那里放着,
比如我现在做的系统中,使用了TPageControl,把窗体粘贴在上面,当切换时,把未显示
过的窗体显示出来,随着TPageControl的切换,系统资源急剧下降,到一个较低的水平才
稳定下来(WIN98)。

建议在程序控制窗体的生成数量,模态窗体尽量到到随生成随用并立即Free等...


来自:min_kuan, 时间:2002-9-29 16:23:00, ID:1353680 | 编辑
我用的大部分都是动态窗体,也比较复杂,但有时在我未打开这些大型窗体时,问题就出来了


 
和大家的建议一样:在win98中编绎执行文件.
另外要看看是否防毒软件影响。
 
各种方法都试过了,就连98的系统补丁和IE的补丁都打过上去了,还是一样!!!
 
win98的定位用户是谁?
winnt/2000的定位用户是谁?

搞清楚了这两个问题, 您就不必再在您的程序上动脑筋了。 劝客户换操作系统吧。 (既然是大项目......)
 
对于会出错的窗体,将其单独放置于一个工程中重新进行编译调用,也会出现上述情况。
我的窗体中应用了多个PageControl、DBGridEh、Cool系列控件等,并动态导入一幅较大
的图片,Dataset也有十多个,可能整个窗体占用的资源会比较大,但是有什么方法可以
有效地调整资源呢?程序已定形,修改窗体是不可能的了。
 
我发现在98下运行时,打开会出错的页面时,系统内存资源完全耗尽,然后就报出一大堆不知是什么的错误,但我的页面又不得不使用那些控件
 
今天更改了里面的几个控件,效果稍为好点,但打开窗体多了,内存可用资源剩下不足20%时,就会出错,把错误拦截下来后,其它模块可正常使用,但退出还是会报“非法操作”。
我用的是MDI窗体,报错后应该如何释放资源,使其可以重新打开?
 
今天更改了里面的几个控件,效果稍为好点,但打开窗体多了,内存可用资源剩下不足20%时,就会出错,把错误拦截下来后,其它模块可正常使用,但退出还是会报“非法操作”。
我用的是MDI窗体,报错后应该如何释放资源,使其可以重新打开?
 
我正在做一个系统,D6+ADO+SQL2000,开发环境WIN2K Server。
客户端98SE,ADO用98自带的。
FORM有50多个,全是预先生成好的,并未出现你说的情况。
你设计时是不是很多DataSet一运行就是打开状态?这样的话可能会占用很多资源。
我的做法是要用时才打开相应的DataSet,用完可关的立即关掉,现在机器配置
一般最少都有128M内存,资源应该不成问题的。
建议你多找找在哪些地方消耗了太多资源,比如一次不要返回太大的结果集等等。
 
看上面的描述,应该是程序的内存的处理问题。。。

在内存上,消耗过大导致出问题。。。。

//建议你多找找在哪些地方消耗了太多资源,比如一次不要返回太大的结果集等等。
//动态建立Form、控件,用完后立刻释放等处理。。。。
 
后退
顶部