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页,编写如下代码.
' 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