伯乐共勉

讨论。NET专区
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

给PD增加一个DELPHI的析构函数

Posted on 2007-03-13 12:45  伯乐共勉  阅读(450)  评论(0编辑  收藏  举报

Delphi的析构函数与其它的析构函数有所不同,它是以destructor Destroy; override这样操作的。我们在用GTL处理的时候,有好几种办法。

办法1、增加一个destructor的版型,然后增加SignatureBody<<Destructor>>DefaultBody<<Destructor>>两个节点。

办法2、以函数名来约束,一般的语言,比如C#C++,在GTL中,一般都是用函数名来判断是否为构造或析构函数的。我们之前的study.oxl中,也是用函数名来操作的,所以我们这里的析构函数也用此方法来进行操作。

至于构造函数,我们可以用方法中的快速菜单, Add Contructor按钮来生成。这里就不多说了。

 

为了操作方便,这里使用了pd的一项新特性,在pd10以后应该就具有,那就是给类增加一个右键菜单。请按如下操作。

1、  PD中,打开菜单 Edit Current Object Language…。这会打开GTL编辑窗体。

2、  找到节点Profiler->Class。在此节点上点右键,New->Menu

3、  增加一个-分隔线和一个子菜单。

4、  给子菜单增加一个节点,名为‘创建析构函数 (CreateDestructor)’,前面的内容是在菜单上显示的内容,后面的是其对应的方法名。

5、  保存之后,在类图上对某一个类点右键。会出现我们刚增加的菜单,下面增加这个类的方法。

6、  再次打开GTL编辑器,找到CLASS节点,在此节点上点右键,New->Method,给此方法命名为 CreateDestructor

7、  Method Script页,编写如下代码.

 Sub %Method%(obj)

            
' Implement your method on <obj> here

    
dim oper

            
set oper = obj.CreateObject(PdOOM.cls_Operation)

            oper.Name 
= "destroy"

            oper.Code 
= "destroy"

            oper.ReturnType 
= ""

            oper.Stereotype 
= "Destructor"

End Sub

8、  保存,在类图上对一个类点右键。点击我们增加的菜单,我们会发现,给这个类已经增加了一个名为Destroy,版型为Destructor的方法。

9、  打开GTL,给Operation增加一个SignatureBody<%isDestructor%>的值。内容为destructor %Parent.Code%.Destroy

10、              Operation->Implementation templates中增加DefaultBody<%isDestructor%>,内容为

begin

   // TODO : 析构函数。在此处写上代码的备注

     inherited Destroy;

end;

就完成了。之前有一个版本的isDestructor是错的,请更正为

.if (%Code% == ~%Parent.Code%) or (%Code% == "destroy")

true

.else

false

.endif