zoukankan      html  css  js  c++  java
  • delphi xe3的helper语法 good

    在C#中有一个很有用的helper保留字,它可以让我们对已有的类添加额外功能,当时就在想delphi有这个保留字就好了,这样许多控件就不需要继承重写了.后来delphi 果然有了这个语法,到delphixe3,这个保留字就很强大了,不但class、record类型可用,现在连pascal基本类型也能使用了。实际上delphixe3 的string类型就是这样使用的。具体可查看System.SysUtils源代码。 那么对整数integer int64等类型可用吗?答案是肯定。

      ThelperUInt64 = record helper for UInt64
      private
      public
        function ToString: string;
        function ToHex(Digits: integer): string;
      end;
    这样,就可以在程序中使用如下语法形式了,
    var
      ui64:uint64;
    begin
      ui64:=34567;
      showmessage(ui64.ToString);//'34567'

    end;
    其实这不是最有用的,最有用是弥补祖先类控件的不足,比如

      ThelperEdit = record helper for Tedit
      public
        function Asinteger:integer;
        function AsDateTime: TDateTime;
        function Setkeycontrol(var rkey: Char; RightSet: TSysCharSet);
      end;
    这样所有包含和继承于Tedit的控件 就都可以使用 以上函数了,而不必一个个重载了.
    ------  附System.SysUtils 的TStringHelper
     TStringHelper = record helper for string
      private
        function GetChars(Index: Integer): Char; inline;
        function GetLength: Integer; inline;
        class function CharInArray(const C: Char; const InArray: array of Char): Boolean; static;
        function IndexOfAny(const Values: array of string; var Index: Integer): Integer; overload;
      public
        const Empty = '';
        // Methods
        class function Create(C: Char; Count: Integer): string; overload; inline; static;
        class function Create(const Value: array of Char; StartIndex: Integer; Length: Integer): string; overload; static;
        class function Create(const Value: array of Char): string; overload; static;
        class function Compare(const StrA: string; const StrB: string): Integer; overload; static;
        class function Compare(const StrA: string; const StrB: string; IgnoreCase: Boolean): Integer; overload; static;
        class function Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer): Integer; overload; static;
        class function Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer; IgnoreCase: Boolean): Integer; overload; static;
        class function CompareOrdinal(const strA: string; const strB: string): Integer; overload; static;
        class function CompareOrdinal(const strA: string; indexA: Integer; const strB: string; indexB: Integer; length: Integer): Integer; overload; static;
        function CompareTo(const strB: string): Integer;
        function Contains(const Value: string): Boolean;
        class function Copy(const Str: string): string; inline; static;
        procedure CopyTo(SourceIndex: Integer; var destination: array of Char; DestinationIndex: Integer; Count: Integer);
        class function EndsText(const ASubText, AText: string): Boolean; static;
        function EndsWith(const Value: string): Boolean; overload;
        function EndsWith(const Value: string; IgnoreCase: Boolean): Boolean; overload;
        function Equals(const Value: string): Boolean; overload;
        class function Equals(const a: string; const b: string): Boolean; overload; static;
        class function Format(const Format: string; const args: array of const): string; overload; static;
        function GetHashCode: Integer;
        function IndexOf(value: Char): Integer; overload; inline;
        function IndexOf(const Value: string): Integer; overload; inline;
        function IndexOf(Value: Char; StartIndex: Integer): Integer; overload;
        function IndexOf(const Value: string; StartIndex: Integer): Integer; overload;
        function IndexOf(Value: Char; StartIndex: Integer; Count: Integer): Integer; overload;
        function IndexOf(const Value: string; StartIndex: Integer; Count: Integer): Integer; overload;
        function IndexOfAny(const AnyOf: array of Char): Integer; overload;
        function IndexOfAny(const AnyOf: array of Char; StartIndex: Integer): Integer; overload;
        function IndexOfAny(const AnyOf: array of Char; StartIndex: Integer; Count: Integer): Integer; overload;
        function Insert(StartIndex: Integer; const Value: string): string;
    //    function IsNormalized: Boolean; overload;
    //    function IsNormalized(NormalizationForm: TNormalizationForm): Boolean; overload;
        function IsDelimiter(const Delimiters: string; Index: Integer): Boolean;
        function IsEmpty: Boolean;
        class function IsNullOrEmpty(const Value: string): Boolean; static;
        class function IsNullOrWhiteSpace(const Value: string): Boolean; static;
        class function Join(const Separator: string; const values: array of const): string; overload; static;
        class function Join(const Separator: string; const Values: array of string): string; overload; static;
    //    class function Join(Separator: string; const values: IEnumerable): string; overload; static;
        class function Join(const Separator: string; const Values: IEnumerable): string; overload; static;
        class function Join(const Separator: string; const value: array of string; StartIndex: Integer; Count: Integer): string; overload; static;
        function LastDelimiter(const Delims: string): Integer;
        function LastIndexOf(Value: Char): Integer; overload;
        function LastIndexOf(const Value: string): Integer; overload;
        function LastIndexOf(Value: Char; StartIndex: Integer): Integer; overload;
        function LastIndexOf(const Value: string; StartIndex: Integer): Integer; overload;
        function LastIndexOf(Value: Char; StartIndex: Integer; Count: Integer): Integer; overload;
        function LastIndexOf(const Value: string; StartIndex: Integer; Count: Integer): Integer; overload;
        function LastIndexOfAny(const AnyOf: array of Char): Integer; overload;
        function LastIndexOfAny(const AnyOf: array of Char; StartIndex: Integer): Integer; overload;
        function LastIndexOfAny(const AnyOf: array of Char; StartIndex: Integer; Count: Integer): Integer; overload;
        function PadLeft(TotalWidth: Integer): string; overload; inline;
        function PadLeft(TotalWidth: Integer; PaddingChar: Char): string; overload; inline;
        function PadRight(TotalWidth: Integer): string; overload; inline;
        function PadRight(TotalWidth: Integer; PaddingChar: Char): string; overload; inline;
        function Remove(StartIndex: Integer): string; overload; inline;
        function Remove(StartIndex: Integer; Count: Integer): string; overload; inline;
        function Replace(OldChar: Char; NewChar: Char): string; overload;
        function Replace(OldChar: Char; NewChar: Char; ReplaceFlags: TReplaceFlags): string; overload;
        function Replace(const OldValue: string; const NewValue: string): string; overload;
        function Replace(const OldValue: string; const NewValue: string; ReplaceFlags: TReplaceFlags): string; overload;
        function Split(const Separator: array of Char): TArray; overload;
        function Split(const Separator: array of Char; Count: Integer): TArray; overload;
        function Split(const Separator: array of Char; Options: TStringSplitOptions): TArray; overload;
        function Split(const Separator: array of string; Options: TStringSplitOptions): TArray; overload;
        function Split(const Separator: array of Char; Count: Integer; Options: TStringSplitOptions): TArray; overload;
        function Split(const Separator: array of string; Count: Integer; Options: TStringSplitOptions): TArray; overload;
        function StartsWith(const Value: string): Boolean; overload;
        function StartsWith(const Value: string; IgnoreCase: Boolean): Boolean; overload;
        function Substring(StartIndex: Integer): string; overload;
        function Substring(StartIndex: Integer; Length: Integer): string; overload;
        function ToCharArray: TArray; overload;
        function ToCharArray(StartIndex: Integer; Length: Integer): TArray; overload;
        function ToLower: string;
        function ToLowerInvariant: string;
        function ToUpper: string;
        function ToUpperInvariant: string;
        function Trim: string; overload;
        function Trim(const TrimChars: array of Char): string; overload;
        function TrimEnd(const TrimChars: array of Char): string;
        function TrimStart(const TrimChars: array of Char): string;
        property Chars[Index: Integer]: Char read GetChars;
        property Length: Integer read GetLength;
      end;

    http://blog.sina.com.cn/s/blog_53866d750101697b.html

  • 相关阅读:
    Zstack中任务,事件,消息之间的关系
    Zigbee折腾之旅:(一)CC2530最小系统
    计算机中原码,反码,补码之间的关系
    Python3
    Python3
    Python3
    【基础】强软弱虚引用
    SpringBoot上传文件时MultipartFile报空问题解决方法
    Mockito中的@Mock和@Spy如何使用
    Vim 多行剪切、复制和删除
  • 原文地址:https://www.cnblogs.com/findumars/p/5956901.html
Copyright © 2011-2022 走看看