百分之百的老调重谈!!excel的释放(50分)

  • 主题发起人 主题发起人 苦海无边
  • 开始时间 开始时间

苦海无边

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟用以下方法连接excel,
formmain.out_excel := createoleobject('excel.application');
但是 用了
formmain.out_excel.quit;
formmain.out_excel.:= Unassigned;//这句话究竟是释放了excel还是释放了out_excel这个变量?
并不能将其从内存中释放。
这真是个棘手的问题吗?
 
In the code fragment shown below, the statement that assigns Unassigned to the MSWord variable causes the OLE Automation Object that was created to interface with Word to be released.

var
MSWord: Variant;
begin
...
MSWord := CreateOleObject('Word.Basic');
...
MSWord := Unassigned;
...

end;

delphi的标准帮助 ,难道这就是传说中的bug?
 
formmain.out_excel.quit,這個是釋放整個excel的
如果你另外打開著一個excel文件,執行後會把這個excel文件關閉的
 
我也遇到过这个问题,formmain.out_excel.quit 虽然表面上关闭了EXCEL,但按CTRL+ALT+DEL,发现内存列表中仍然存在EXCEL
 
那帮助中的例子又是什么意思?
 
程序出错当然不能释放
没错的话可以的
不过我现在不用这个了
用控件来实现多好
 
我能保证我的程序没有出错
 
我以前用你那样的方法
打开、关闭word 没有错误
内存中没有winword
 
事实上 我再调试的时候 试过 上面的例子 的确可以杀掉进程。
我的程序中,也用的是这个办法。
但是。现在使用该程序的客户。 的确因此出现了问题。
我亲手试的 ctrl+alt+del 活生生的3个excel进程。。。。
我觉得,还是有什么疏漏的地方。就是出现这个现象一定有它的原因。
但那是什么呢?
不想没有结果,顶一下~
 
由于用户的干扰导致异常中断,就会出现上面问题!
建议加入异常处理!
 
楼上的说的对,我试了一下,
formmain.out_excel.quit;
可以释放掉excel
formmain.out_excel.:= Unassigned 加不加结果一样,他只是释放了变量而已
还是用异常处理吧
 
我将关闭过程放在 form 的 close 事件里
按理说 不会有异常阿?
 
用户用的时候,如果偶尔出了异常,他就会再试一次,这是,内存中excel的一个实例就
不能释放了
 
..try ....
thx wfzha~
 
????
在所有调用out_excel的语句上加上try ...finally ....试试
 
请大家关注这个问题,至于分数
只要有有效的办法,另开铁+ 不食言!
 
var
MSWord: Variant;
begin
...
MSWord := CreateOleObject('Word.Basic');
...
MSWord := Unassigned;

这个问题表面上是释放 Word ,但是实际上 是释放 COM 的问题,所以Delphi 的例子并没有错误,因为 MSWord 的接口释放掉了,那么 OLE 服务会被系统自动杀掉,但是有的 OLE 服务程序启动了其他的全局资源,所以提供了单独的释放过程,例如 Quit 但是即使是这样还是要使用 MSWord := Unassigned 来声明这个接口已经不在使用,让Delphi 自动释放掉这个接口,不知道我解释的是否明白?

 
为何释放不掉的说~
理论上是这样的话,那么实际情况的异常在哪里呢?
有没有有效的办法解决。

彻底明白给你100分 不要嫌少,我也不是大款~
 
贴出你的代码,我可以帮你看看,为了程序的稳定,一个就是要保证你的 Quit 和 Unassigned 被执行到,如果你的程序运行过程中没有使用 try finally end 保护起来,那么发生异常没有被释放是肯定的。
但是有时即使是 Unassigned 被调用也不会释放,因为 接口的特征是 当调用引用计数器为零的时候才释放,所以你要保证你的 Unsassigned 与 Create As 等操作成对使用,这要靠你不断调试程序解决了。

 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部