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
delphi xe3的helper语法 good的更多相关文章
- Delphi 7以来的Delphi 2009测试版新语法特性
我晕,Delphi 7 以后增加了这么多有用的语法,我都不知道.真是越学越觉得自己浅薄,自己所作的Delphi项目所用的知识还不够Delphi知识储备体系的十分之一,更别说Delphi还在继续发展. ...
- 把exe嵌入到自己的exe中。delphi xe3
下面是一个把exe程序嵌入到我们自己的exe中.开发环境 Delphi XE3 Version 17.0.4625.53395.OS环境WIN7 SP1,由于xe3版本的引用库发生变化.换成其他版本的 ...
- ASP.NET MVC 3和Razor中的@helper 语法
原文:http://kb.cnblogs.com/page/102191/ ASP.NET MVC 3支持一项名为"Razor"的新视图引擎选项(除了继续支持/加强现有的.aspx ...
- Delphi XE3通过ADOConnection 连接 MySQL 5.5.27 数据库
Delphi XE3通过ADOConnection 连接 MySQL 5.5.27 数据库 unit Unit1; interface uses Winapi.Windows, Winapi.Mess ...
- (转)ASP.NET MVC 3和Razor中的@helper 语法
转自:http://kb.cnblogs.com/page/102191/ ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(除了继续支持/加强现有的.aspx视图引擎外).当编写 ...
- Delphi XE3写DLL,用Delphi7调用,报错!
http://bbs.csdn.net/topics/390870532 用delphi xe3写的DLL,delphi7调用,参数都是PAnsiChar,DLL里的函数接收delphi7传的入参,没 ...
- Delphi与C++的语法区别(六点区别) good
一.Delphi永远没办法在栈上创建一个对象 下面是一段常见的的Delphi代码,在过程的开头声明本过程所需要的全部局部变量: procedure Foo;var obj: TObject; //这句 ...
- Delphi和C++的语法区别 (关于构造和析构)
目录 Delphi永远没办法在栈上创建一个对象 Delphi的构造函数更象是个类方法(静态成员函数) Delphi的析构函数中可以调用纯虚方法 Delphi在构造对象时自动将成员变量清零 Delphi ...
- delphi 中sql的语法规范
1.引号配对: 这是在Delphi使用SQL语句时容易出错的地方,由于delphi规定在字符串中用两个西文的单引号“''”表示一个“'”,在拼装语句的时候就容易疏忽遗漏. Delphi里有个函数Q ...
随机推荐
- C# 3.0 LINQ to XML
高级转换: static IEnumerable<XElement> ExpandPaths (IEnumerable<string> paths) { var brokenU ...
- 使用netbeans 搭建 JSF+SPRING 框架
spring版本使用4,jsf版本2.2 jsf的配置文件faces-config.xml <?xml version='1.0' encoding='UTF-8'?> <faces ...
- 12天学好C语言——记录我的C语言学习之路(Day 4)
12天学好C语言--记录我的C语言学习之路 Day 4: 首先来看一段程序: //输出下面4*5的矩阵 /* 1 2 3 4 5 2 4 6 8 10 3 6 9 12 ...
- C#多线程同步
在编写多线程程序时无可避免会碰到线程的同步问题.什么是线程的同步呢? 举个例子:假如在一个公司里面有一个变量记录某人T的工资count=100,有两个主管A和B(即工作线程)在早一些时候拿了这个变量的 ...
- 16_会话技术_Session
[Session简述] * 在Web开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下),因此,在需要保存用户数据时,服务 ...
- QT5新手上路(2)发布exe文件
QT编程教程在网上有很多,但写完代码以后如何打包成可执行exe文件却少有提及,本文主要介绍这一部分:1.首先确认自己建的工程在debug模式下运行无误.2.在release模式下运行一遍.(如何更改成 ...
- 基于bootstrap3的 表格和分页的插件
如题 样式呢就是bootstrap3 的 功能呢就是实现表格和分页 (以上废话) 本来是自己没事儿写的一个js插件,曾经搁浅了一阵子,但最近由于公司项目的原因也需要这样的一个插件,所以就捡起来做了个可 ...
- ASP.NET MVC概述
原文:http://www.asp.net/mvc/tutorials/older-versions/overview/asp-net-mvc-overview 这篇文章帮助你了解关于ASP.NET ...
- php eval函数用法总结
可以在php.ini禁止此函数,结果失败了 eval定义和用法 eval() 函数把字符串按照 PHP 代码来计算. 该字符串必须是合法的 PHP 代码,且必须以分号结尾. 如果没有在代码字符串 ...
- IE 6/7下自赋值导致 overflow 溢出
情景是要限制一个textarea的最大输入字数(100字, 这字数限制也太少了点吧,不大气) 由于限制输入后需要允许 回退,全选等功能键,故放弃keyup, keydown组合 选用property ...