随笔 - 2146  文章 - 19 评论 - 11846 阅读 - 1267万

06 2013 档案
关于 TRegEx.Split()
摘要:表达式中的括号将严重影响分割结果.uses RegularExpressions;const FSourceText = '1: AAA 2: BBB 3: CCC'; // 分隔符将有三部分构成: 一个数字, 一个冒号, 一个空格var Arr: TArray; str: string;procedure TForm1.Button1Click(Sender: TObject);begin Arr := TRegEx.Split(FSourceText, '\d: '); Memo1.Clear; for str in Arr do Memo1.Lines.A 阅读全文
posted @ 2013-06-21 11:30 万一 阅读(5357) 评论(2) 推荐(0) 编辑
Delphi 的链式代码
摘要:有了一系列的 Helper, Delphi 也可以使用链式代码了.//譬如要把 3.1415926 中的 141 提取为一个整数:var num: Integer;begin num := Pi.ToString().Split(['.'])[1].Substring(0,3).ToInteger(); // 输入 . 后, 记得使用 Ctrl+Space 提示代码 ShowMessage(num.ToString()); // 141end;我是在写类似下面程序时开始使用的:{程序要求从下面的文本中提取 A: B: ... 后面的文本到指定的变量:A: qwertyuiopB 阅读全文
posted @ 2013-06-20 01:00 万一 阅读(3613) 评论(3) 推荐(0) 编辑
没用过的函数 GetHomePath - 获取用户程序数据目录
摘要:uses System.IOUtils;procedure TForm1.FormCreate(Sender: TObject);var S: string;begin { 三种方法结果一致: C:\Users\wy\AppData\Roaming } S := GetHomePath; // SysUtils, 能跨平台且简单, 在 Windows 下使用 SHGetFolderPath 完成 S := TPath.GetHomePath; // System.IOUtils S := GetEnviron... 阅读全文
posted @ 2013-06-16 23:12 万一 阅读(2831) 评论(8) 推荐(0) 编辑
其它 Helper
摘要:TByteHelperTShortIntHelperTSmallIntHelperTWordHelperTCardinalHelperTIntegerHelperTInt64HelperTUInt64HelperTNativeIntHelperTNativeUIntHelper// 它们定义在 System.SysUtils, 功能基本一样, 常用的有:var I: Integer; S: string;begin I := I.MaxValue; // 2147483647 I := I.MinValue; // -2147483648 I := I.Size; ... 阅读全文
posted @ 2013-06-15 22:38 万一 阅读(4185) 评论(6) 推荐(0) 编辑
测试 System.SysUtils.TStringHelper
摘要:大小写转换:function ToLower: string;function ToLower(LocaleID: TLocaleID): string;function ToLowerInvariant: string;function ToUpper: string;function ToUpper(LocaleID: TLocaleID): string;function ToUpperInvariant: string;class function LowerCase(const S: string): string;class function LowerCase(const S: 阅读全文
posted @ 2013-06-14 22:48 万一 阅读(7713) 评论(4) 推荐(2) 编辑
关于字符串, 之前没这样用过
摘要:procedure TForm1.FormCreate(Sender: TObject);var str: string; n1, n2, n3: Integer;begin str := 'ABC'; n1 := Low(string); // 1 n2 := Low(str); // 1 n3 := High(str); // 3// ShowMessageFmt('%d, %d, %d', [n1, n2, n3]);end; 阅读全文
posted @ 2013-06-14 22:09 万一 阅读(2437) 评论(0) 推荐(0) 编辑
曾经被忽视的两个小功能
摘要:曾经想过, Delphi 要能这样给数组赋值就好了: arr := [...];VarArrayOf 可不是新东西, 不过之前还没习惯用它.var bs: TBytes;// bs: TArray&ltByte>begin// SetLength(bs, 3); bs := VarArrayOf([11, 22, 33]); ShowMessage(IntToStr(bs[2])); //33end;var strArr: TArray&ltstring>begin// SetLength(strArr, 3); strArr := VarArrayOf([  阅读全文
posted @ 2013-06-13 22:22 万一 阅读(2767) 评论(0) 推荐(1) 编辑
多线程编程, 这三个方法够我用了.
摘要:有一段多线程的程序需要完善, 捋了一遍 XE4 中关于多线程的源码, 发现有这三个类方法就足够我用了, 暂时结束学习.TThread.CreateAnonymousThread(); //普通TThread.Queue(); //队列TThread.Synchronize(); //VCL 同步 阅读全文
posted @ 2013-06-11 11:40 万一 阅读(16302) 评论(12) 推荐(0) 编辑
System.SysUtils.TMarshaller 与 System.TMarshal
摘要:TMarshaller(结构) 基于 TMarshal(是有一大堆的 class 方法组成的类) 实现.TMarshaller 可以对缓存区进行自动(自动释放)安全地管理, TMarshal 也有前者没有的重要方法, 譬如: TMarshal.Copy() 方法.有了它们, 以后关于内存缓冲区, 字符串转码等操作就更方便了.{测试}procedure TForm1.FormCreate(Sender: TObject);var M: TMarshaller; pw: TPtrWrapper; str: string; bs: TBytes;begin bs := BytesOf('万. 阅读全文
posted @ 2013-06-10 18:27 万一 阅读(2470) 评论(0) 推荐(0) 编辑
曾经对 TMemoryStream.Memory 错误的理解
摘要:TMemoryStream 的 Position 变化后, 我曾经认为它的 Memory 属性也会变化; 只怪不看源码, 只想当然!procedure TForm1.FormCreate(Sender: TObject);var Stream1,Stream2: TMemoryStream; pw: TPtrWrapper;begin Stream1 := TStringStream.Create('1234567890'); Stream2 := TStringStream.Create('ABCDEFGHIJ'); //想把 Stream1 变成 123DE 阅读全文
posted @ 2013-06-10 12:38 万一 阅读(3870) 评论(1) 推荐(0) 编辑
System.TPtrWrapper - 指针包装器
摘要:不知什么时候 System 单元有了 TPtrWrapper 结构体, 它提供了非常小的一点功能: 指针(Pointer)与指针地址(NativeInt)的转换.很显然, 以前常用的 Integer(P) 或 Ptr(Number) 已经不适用与 64 位了, 这时使用 TPtrWrapper 应该是更方便,更保险的选择.发现在 Delphi 新的源码中, 几乎就把 TPtrWrapper 当做指针来使用了.{TPtrWrapper 全功能测试}procedure TForm1.FormCreate(Sender: TObject);var num: Integer; p: Pointer.. 阅读全文
posted @ 2013-06-10 12:14 万一 阅读(1741) 评论(3) 推荐(0) 编辑



点击右上角即可分享
微信分享提示