zoukankan      html  css  js  c++  java
  • Delphi Helper Record Class

    unit Unit1;
    
    {$DEFINE USESGUIDHELP}
    
    interface
    
    implementation
    
    {$IFDEF USESGUIDHELP}
    uses System.SysUtils;
    {$ENDIF}
    
    procedure test;
    var
      a:TGUID;//System单元
    begin
      {$IFDEF USEGUIDHELP}
      a.NewGuid   //调用System.SysUtils.TGuidHelper
      a.Create()  //调用System.SysUtils.TGuidHelper
      {$ENDIF}
    end;
    
    end.
      PGUID = ^TGUID;
      TGUID = packed record
        D1: LongWord;
        D2: Word;
        D3: Word;
        D4: array[0..7] of Byte;
        class operator Equal(const Left, Right: TGUID): Boolean;
        class operator NotEqual(const Left, Right: TGUID): Boolean;
        class function Empty: TGUID; static;
      end;
    type
      TGuidHelper = record helper for TGUID
        class function Create(const B: TBytes): TGUID; overload; static;
        class function Create(const S: string): TGUID; overload; static;
        class function Create(A: Integer; B: SmallInt; C: SmallInt; const D: TBytes): TGUID; overload; static;
        class function Create(A: Integer; B: SmallInt; C: SmallInt; D, E, F, G, H, I, J, K: Byte): TGUID; overload; static;
        class function Create(A: Cardinal; B: Word; C: Word; D, E, F, G, H, I, J, K: Byte): TGUID; overload; static;
        class function NewGuid: TGUID; static;
        function ToByteArray: TBytes;
        function ToString: string;
      end;

    1、Record不支持继承,使用Helper间接是完成了继承

    2、将Record分别在各自的单元(命名空间下),可选择的使用Helper,即可在不影响原调用的情况下,在扩展代码中使用Helper的方法,也可以无需修改原Record或class定义而直接覆盖它们中的方法。

  • 相关阅读:
    在线加密解密
    ctcms Nginx 伪静态
    iTem2 保持连接,解决ssh的"Write failed: Broken pipe"问题
    打开窗口弹出页面
    点击弹窗
    javascript 技巧
    使用Chrome工具来分析页面的绘制状态
    jquery结合JSONP教程—明河谈jquery
    使用 JSONP 实现跨域通信,第 1 部分: 结合 JSONP 和 jQuery 快速构建强大的 mashup
    jsonp详解
  • 原文地址:https://www.cnblogs.com/ZhouXiHong/p/4386715.html
Copyright © 2011-2022 走看看