• 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定义而直接覆盖它们中的方法。

  • 相关阅读:
    poj1243(经典dp)
    hdu3485(递推)
    poj2479(dp)
    hdu3415(单调队列)
    hdu1876(dp)
    hdu1042(大数模板)
    hdu2125(数学)
    hdu1992(递推)
    android api文档:intent阅读笔记
    bitmap相关工具类
  • 原文地址:https://www.cnblogs.com/ZhouXiHong/p/4386715.html
Copyright © 2020-2023  润新知