:紧急求救:小弟在2000下写的程序在98下用不了?????同样是微软出的操作系统,咱的程序执行起来的差距怎就那么大呢?(200分)

大毛

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟近日刚写完一段程序,是在2000server+delphi6的环境下写的,几乎没有用什么特殊控件,
就用了XML3.0类型库和TWebBrowser,用以处理一些xml文档。可是当把EXE文件拿到98及WINME下
用时,发生了一些莫名其妙的事情:
具体问题请参照http://www.delphibbs.com/delphibbs/dispq.asp?lid=1294160,另外:
1:在98下点打印〉取消时,出现对话框“试图激活位注册的丢弃文件”(我调用的TwebBrowser
的ExecWB,别告我加那几句OLE初始化的代码,我已经加了);此问题只在98+IE5.0出现,
WinME+IE5.5没出现,会不会是IE版本的问题,我还没试过。
2:对于PageControl控件的问题:首次打开的是TabSheet1,拖动Splitter时(我在SplitterMoved
事件里写了调整TabSheet2和TabSheet3里头各控件的位置),转到TabSheet2和3,位置根本没变.
(此问题在2000下也存在)。
3:点击一按钮准备打开某一窗体时(根本没打开),告知"Invalid pointer operation",再次点击
时,告知"Cannot make a visible window modal".(这个问题最致命,我大部分检索功能全在这个窗体里)
4:程序退出时出现如下文字:
Exception EInvalid Pointer in modual ***.exe at **********;
程序执行非法操作;。。。。。。

 
从新编译一下.
 
慢慢调试,没有办法的
98系列/nt系列,本来好多内部机制不一样
有些函数的返回值都不一样,你要试着来
98的程序在nt下一般都可以跑,
而nt下的程序到98里面,就难说了
总体来讲,nt(包括2000)比较完善
 
真的没有人在继续下去了么?这个问题对于这里的富翁们来说,不算难吧?
还是大家不屑于回答这些问题???我今天都等了一天了.
小弟是初次写程序,经验颇少,不知为何发生此种现象,
无一点头绪,而程序马上就要交付使用。请各位题点建议,不知各位在写程序时,是否也遇到
此类问题。
 
1:肯定是IE版本问题,看一下你的2000的IE版本。应该是5。5以上的吧,
这东西不是向下兼容的。

2:不知道,应该是你程序写法的问题。

3,4:应该是程序内存分配上的问题。有些内存分配上的问题在2000下可以通过,98下不行
看你的情形应该是出在窗体的控件上吧,我以前用VC时发现过类似的问题,
你在窗体的初始化时弹出一个提示框,看程序是否能执行到这里,如果不能的话,就是之前
的控件构造时出了问题。


 
能用的。应该是你用的控件有问题吧
 
我也有这样的问题
我在win2000pro+delphi6下做了一个屏保
但在win98下也能运行,但动画有点乱!2000下没问题
 
to lww:对于问题3,4,我想你说的是对的,可是,我说过了,我是一个新手(不是学计
算机的,一些基本的东西学的不是很扎实),对于指针、内存分配之类的东西,只能是
摸着石头过河,没有实实在在的把握。几天看了看那个程序,又发现一些问题,还是什么
“Out of Memory”之类的,可在2000下一点问题没有,我真搞不明白了。
 
看来一下你的这些问题。稍微谈一下自己的粗浅意见。
1、记得以前论坛上也有人对Windows 98和2000的兼容性提出过质疑,记得似乎是说98和2000很多都是同步开发。
但是似乎不是同一个开发组开发的,所以很多函数都是看似外表相同,但是内部实现有很大差距。这也许是你的程序出问题的一个原因。
2、出现”试图激活位注册的丢弃文件“也许是你的程序问题,也许是IE版本之间兼容的问题。
最好的测试办法是你在98下编译一下,然后分别在IE5和IE5.5下运行测试一下,马上就能够看出结果。估计是版本兼容问题。
3、对于PageControl,基本上可以说是你的程序问题,还有,使用Splider的时候,为什么需要写事件呢?一般设置一下各窗口的Align就可以搞定——高级操作除外。
4、剩余的两个问题基本可以说是你的程序问题,给你的建议是:对于Delphi,能不用指针的地方就避免使用指针,尤其是对于初学者。指针其实本来在Delphi中也是不推荐使用的。
 
to yzhshi:其实,在我程序里,也是基本没用什么指针,就是有一个什么Pchar的函数,我
想问题不太会出在这里的。不过,得感谢你的忠告,我得再花功夫仔细看看程序的。
对于问题PageControl的问题,我已经像你说的设置过Align,可是总不能通过设置它
来使Edit控件在拖动Splitter时改变大小吧。
再次感谢你的若干建议,我得静下心来好好研究一下,太浮躁了,我。
 
呵呵,pChar就是指针的。
改变Edit的大小确实需要写代码,不过你可以在TabSheet的Resize里面写代码,这样更好一些。
 
真的再次感谢你的参与以及中肯的建议,我现在还在家里,马上到公司调程序去。
DFW有你们这样的热心高手,真是我们这些新手的福址。
 
问题还没有解决,不过可否重新整理一下。现在还有那一个问题没有解决?
 
问题1,2基本解决了,就是3,4还是老出现,真的没一点头绪。
 
不用pChar,改用String来完成试验一下。
或者精简一下你的代码,将“最小的出错版本”贴出来。
 
好的,一会儿见,你什么时下网?不知
 
没事,你贴吧,我不在。
大家会的就会帮你解决的。
 
详细的讲一下发生的一些情况吧:
在程序开发的过程中(还有一部分功能没做完时),我把它拿到98下用了一次,问题跟现在差不多。
更为令人不可思议的是,我出问题的那个Form根本连在设计状态下都打不开(就是View>Project Manager)
点击那个单元), 而且此时Delphi自己也死了。
我当时用了一种极笨的办法:删除此单元,重画一个一模一样的Form,各控件命名没变,Code拷过去,
一执行,竟然通过了,难道我现在还真那么在做一遍吗?
 
打不开Form理论上说是不应该的。
但是重新编译一次也许有的时候是必需的。
 
你说是不是Delphi自己的问题,我用的是D版
 
顶部