`
java-mans
  • 浏览: 11421613 次
文章分类
社区版块
存档分类
最新评论

关于 class helper for ... 语法

 
阅读更多

class helper 可能是从 Delphi 2007 增加的新语法, 因为感觉不太实用, 直到今天才测试了一下.

试过之后才知道: 挺有意思的! 基本功能就是修改已存在的类.

Txxx = class helper for T... {T... 表示已存在的类} {可以替换已存在的方法} {也可以有新的方法、成员}end;
//这之后再使用 T... 类及其子孙类时, 都会优先使用 Txxx 的修改.

例一:

unit Unit1;
interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
TMyClass = class function func1: string;
function func2: string;
end;
TMyClassHelper = class helper for TMyClass function func1: string;
{将把 TMyClass 的同名方法替换掉} function func3: string;
{将为 TMyClass 及其子类增加这个方法} end;
var Form1: TForm1;
implementation{$R *.dfm}{ TMyClass }function TMyClass.func1: string;
begin Result := 'TMyClass.func1';
end;
function TMyClass.func2: string;
begin Result := 'TMyClass.func2';
end;
{ TMyClassHelper }function TMyClassHelper.func1: string;
begin Result := 'TMyClassHelper.func1';
end;
function TMyClassHelper.func3: string;
begin Result := 'TMyClassHelper.func3';
end;
//测试procedure TForm1.Button1Click(Sender: TObject);
var obj: TMyClass;
begin obj := TMyClass.Create;
ShowMessage(obj.func1);
{TMyClassHelper.func1} ShowMessage(obj.func2);
{TMyClass.func2}

分享到:
评论

相关推荐

    Delphi 7以来的新语法特性

    TFoo = class helper for TControl private function GetA: Integer; public class var X: Integer; procedure MSG(var Message: TMessage); message WM_MYMESSAGE; procedure ProcFoo; property A: Integer...

    ZendFramework中文文档

    4.3.4. Zend_Cache_Frontend_Class 4.3.4.1. Introduction 4.3.4.2. Available options 4.3.4.3. Examples 4.3.5. Zend_Cache_Frontend_File 4.3.5.1. Introduction 4.3.5.2. Available options 4.3.5.3. ...

    复杂逻辑生成器

    public class MyHtmlHelper { /// /// A simple helper demonstrating the @Html.Raw /// public IEncodedString Raw(string rawString) { return new RawString(rawString); } public int ToInt...

    Ext Js权威指南(.zip.001

    2.7 ext js 4语法 / 42 2.8 本地化 / 60 2.9 为本书示例准备一个模板 / 60 2.10 本章小结 / 61 第3章 调试工具及技巧 / 62 3.1 使用firebug进行调试 / 62 3.2 在ie中调试 / 76 3.2.1 使用debugbar和...

    python爬虫mac版本猪精原创

    - xpath helper插件:帮助我们从`elements`中定位数据 - 1. 选择节点(标签) - `/html/head/meta` :能够选中html下的head下的所有的meta标签 - 2. `//` :能够从任意节点开始选择 - `//li` :当前页面上的所有...

    [原创]自己工作中常用的模板库,简化你的工作

    ☆ helper function to pack multi-parameters into unary function.(it is hard to write unary function object type) ◆ [paramPackage.hpp] ★ 实现了把任意多个(最多7个,可简易扩充),任意类型的参数封装...

    介绍C# 泛型类在使用中约束

    3):给泛型类 加类型(引用类型,值类型)的约束:where T:class,new ( )遇到的问题:在写MongodbHelper类的时候,为了能处理多种类别,所以如下定义了该类: 代码如下: public class MongodbHelper { 。...

    Smart Hyper Editor v0.2.8

    sql term与table editor功能让你轻松完成数据库操作,xml helper工具集有效验证你的xml文档,完美的java代码格式化功能,可以检测基本语法错误,并可对jsp、xml文件进行格式化,支持java class文件反编译功能,...

    inline-svg-helper:即时生成内联SVG

    使用简单的语法编写代码,为SVG生成链接,并使用简单的数据属性声明并放置可选标签。 默认情况下,标签将显示在右侧图标之后。 这使得 <svg style="position: absolute; width: 0; height: 0; overflow: hidden;...

    jdbc连接数据库的方式2

    Class.forName(com.mysql.jdbc.Driver); System.out.println(Success loading Mysql Driver!); }catch(Exception e) { System.out.println(Error loading Mysql Driver!); e.printStackTrace(); } 4、设置连接...

    网狐6.6 服务器源代码 & 共享组件 & 数据库 (3)

    SQLException_Syntax =2, //语法错误 }; //连接状态 enum enTCPSocketStatus { TCPSocketStatus_Idle, //空闲状态 TCPSocketStatus_Connecting, //连接状态 TCPSocketStatus_Connected, //成功...

    网狐6.6 服务器源代码 & 共享组件 & 数据库 (6)

    SQLException_Syntax =2, //语法错误 }; //连接状态 enum enTCPSocketStatus { TCPSocketStatus_Idle, //空闲状态 TCPSocketStatus_Connecting, //连接状态 TCPSocketStatus_Connected, //成功...

    网狐6.6 服务器源代码 & 共享组件 & 数据库(1)

    SQLException_Syntax =2, //语法错误 }; //连接状态 enum enTCPSocketStatus { TCPSocketStatus_Idle, //空闲状态 TCPSocketStatus_Connecting, //连接状态 TCPSocketStatus_Connected, //成功...

    网狐6.6 服务器源代码 & 共享组件 & 数据库 (4)

    SQLException_Syntax =2, //语法错误 }; //连接状态 enum enTCPSocketStatus { TCPSocketStatus_Idle, //空闲状态 TCPSocketStatus_Connecting, //连接状态 TCPSocketStatus_Connected, //成功...

    网狐6.6 服务器源代码 & 共享组件 & 数据库 (5)

    SQLException_Syntax =2, //语法错误 }; //连接状态 enum enTCPSocketStatus { TCPSocketStatus_Idle, //空闲状态 TCPSocketStatus_Connecting, //连接状态 TCPSocketStatus_Connected, //成功...

    网狐6.6 服务器源代码 & 共享组件 & 数据库 (7)完毕

    SQLException_Syntax =2, //语法错误 }; //连接状态 enum enTCPSocketStatus { TCPSocketStatus_Idle, //空闲状态 TCPSocketStatus_Connecting, //连接状态 TCPSocketStatus_Connected, //成功...

    asp.net知识库

    卸载Class? Web Form 窗体 如何实现web页面的提示保存功能 在ASP.Net中两种利用CSS实现多界面的方法 如何在客户端调用服务端代码 页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新...

Global site tag (gtag.js) - Google Analytics