finalization和initialization(100分)

  • 主题发起人 主题发起人 panjf
  • 开始时间 开始时间
P

panjf

Unregistered / Unconfirmed
GUEST, unregistred user!
谁帮我解释一下finalization和initialization的用法和意义,我看《DELPHI5开发人员
指南》看不明白,谢谢
 
initialization程序一开始运行是首先执行他下面的句子
fnitialization和上面相反
 
能举个例子吗?
 
我来抄一段吧:
initialization部分,在单元中它放在文件结尾前,它包含了用来初始化单元的代码,
它在主程序运行前运行并只运行一次。
finalization部分,在单元中它放在initialization和end之间。finalization部分是
在Delphi2.0引进的,在Delphi1.0中这部分是用函数AddExitProc()增加一个退出过程
来实现的,如果要把Delphi1.0的程序移植过来,应该把退出过程中的代码移到这部分
来。

注意:如果几个单元都有initalization/finalization部分,则它们的执行顺序与单元
在主程序的uses子句中的出现顺序一致。不要使intialization/finalization部分的
代码依赖于它们的执行顺序,因为这样的话主程序的uses子句只要有小小的修改,就会
导致程序无法通过编译。
 
小唐,我就是看了这段话才不明白的,
finalization部分在initialization部分中是起什么作用的?
跳出initialization部分?
能举个例子吗?
 
我的理解是这样的:
finalization,它相当于form的destroy事件;
initialization,它相当于form的create事件。
我们没有必要一定要在程序中使用initialization和finalization!
不知你是否同意我的看法。
 
initialization:初始化缺省过程,在Application.initialization调用。
调用顺序:先按uses序调用各unit中的initialization,然后调用Application中的.
finalization:调用顺序与initialization相反。由application.terminate调用。
释放在initialization中创建的对象内存等.
       
 
initialization:
是在程序启动后时候就要执行初始化的, Application.Initialization.
一个程序在开始的时候就要一次性地把所有的Unit中的Initialization都执行一遍.
这个时候,你的Form中的所有对象控件等都没有创建呢.

Finalization:
与Initialization相反, 程序结束之后把每个Unit的Finilization都要执行一遍.

一般来说, Initialization是用来初始化你这个Unit的一些变量以及创建一些对象. 如果
你的Unit中没有初始化任何东西, 就不需要Initialization. 若没有Initialization自然
也不能用Finalization了.

一般情况下, 如果你的Initialization段没有创建任何对象的话, 就不需要Finalization.
若你在Initialization中创建了某些对象, 当程序结束的时候, 可以用Finalization来释放,
否则虽然程序结束了还会丢失内存的.
 
对c++不怎么懂
瞎说一下了
我想这有点类似C++中的声明的一个类的全局实例变量,
当在调用main之前
先调用它的构照函数,最后在析构,
如vc中的CWinApp theApp;
 
后退
顶部