写了一个字符串的二维表: TSta
摘要:STA 单元 (用到 System.SysUtils.TStringHelper):unit STA;interfaceuses System.SysUtils, System.Classes;type TSta = record FSeparator: Char; FArr: TArray>; constructor Create(const aStr: string; const aSeparator: Char = ';'); overload; class operator Explicit(const aStr: string): TSta; clas...
阅读全文
posted @
2013-07-23 14:50
万一
阅读(3001)
推荐(1) 编辑
曾经被忽视的两个小功能
摘要:曾经想过, Delphi 要能这样给数组赋值就好了: arr := [...];VarArrayOf 可不是新东西, 不过之前还没习惯用它.var bs: TBytes;// bs: TArray<Byte>begin// SetLength(bs, 3); bs := VarArrayOf([11, 22, 33]); ShowMessage(IntToStr(bs[2])); //33end;var strArr: TArray<string>begin// SetLength(strArr, 3); strArr := VarArrayOf([
阅读全文
posted @
2013-06-13 22:22
万一
阅读(2753)
推荐(1) 编辑
使用泛型, 写一个为任意类型的动态数组添加元素的方法
摘要:一、使用泛型类:unit Unit1;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; TArr<T> = class class procedure ArrayAdd(var Arr: T...
阅读全文
posted @
2011-12-24 11:57
万一
阅读(10248)
推荐(2) 编辑
关于开放数组的小练习
摘要:{整数求和函数,使用指定类型的开放数组}function Fun1(arr: array of Integer): Integer;var n: Integer;begin Result := 0; for n in arr do Inc(Result, n);end;{整数、浮点数或布尔值的求和函数,使用无类型的开放数组}function Fun2(arr: array of const): Double;var i: Integer;begin Result := 0; for i := Low(arr) to High(arr) do begin case arr[i].VType of
阅读全文
posted @
2011-04-14 10:50
万一
阅读(2379)
推荐(0) 编辑
TClientDataSet[6]: 读取 TClientDataSet 中的图片数据
摘要:当我第一次从 TClientDataSet 中读出图片数据时, 发现不是图片!慢慢观察发现是前面多了 8 个字节(前 4 个字节是 01 00 00 01, 估计是格式标识和头大小; 后 4 个字节是后面图片文件的大小), 去掉这个 8 个字节就是图片文件了.下面的例子先是检索了 20 个示例文件的所有图片字段, 并把其中的图片提取到指定文件夹;还把一个指定字段中的图片显示在了窗体上.//先在窗体...
阅读全文
posted @
2010-01-23 19:32
万一
阅读(4920)
推荐(0) 编辑
关于动态数组指针操作的两个例子
摘要:最近突然感觉 Delphi 的动态数组非常好用, 善用它可以省略很多 GetMem、ReallocMem; 并且它是被自动维护的.动态数组变量 arr 本身就是指针, 不能再用 @arr 获取;但要获取某个元素位置的指针, 应该是 @arr[x]; 但随着数组的再分配, 这个地址是变化的.//动态数组地址测试var i: Integer; arr: TBytes; p: PByte;begi...
阅读全文
posted @
2009-11-11 13:29
万一
阅读(4135)
推荐(0) 编辑
动态数组传递数据示例 - 回复 YinGaGa 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2008/10/14/1310583.html#1673278unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TF...
阅读全文
posted @
2009-10-16 14:03
万一
阅读(5042)
推荐(0) 编辑
如何比较两个二维数组是否相等 - 回复 "阿拉丁" 的问题
摘要:一句话: 用 CompareMem 对比内存即可. {对比静态数组} procedure TForm1.Button1Click(Sender: TObject); var arr1: array[0..3] of AnsiChar; arr2: array[0..3] of Byte; begin arr1[0] := 'A'; arr1[1] := 'B'; arr1[2] ...
阅读全文
posted @
2009-03-13 11:15
万一
阅读(5607)
推荐(0) 编辑
Delphi 的内存操作函数(2): 给数组指针分配内存
摘要:静态数组, 在声明时就分配好内存了, 譬如: var arr1: array[0..255] of Char; arr2: array[0..255] of Integer; begin ShowMessageFmt('数组大小分别是: %d、%d', [SizeOf(arr1), SizeOf(arr2)]); {数组大小分别是: 512、1024} end; 对静态...
阅读全文
posted @
2008-11-10 11:04
万一
阅读(14018)
推荐(1) 编辑
复制动态数组
摘要:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCr...
阅读全文
posted @
2008-10-14 10:38
万一
阅读(6418)
推荐(0) 编辑
数组类型与数组指针的巧妙利用 - 回复 "Delphier" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2008/09/07/1124919.html#1310663 本例通过存取结构, 慢慢引入了数组类型与指针的一些使用方法; 其中六个小例子的测试内容和结果都是一样的. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, C...
阅读全文
posted @
2008-09-08 01:58
万一
阅读(5836)
推荐(1) 编辑
多维动态数组与多维动态数组指针 - 回复 "lz_whj" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2008/05/28/1208964.html#1211428 本例效果图: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, S...
阅读全文
posted @
2008-05-28 11:48
万一
阅读(4761)
推荐(0) 编辑
如何把字符串覆给数组 - 回复"刘那"
摘要:问题来源: http://www.cnblogs.com/del/archive/2008/05/11/1089344.html#1191871 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;...
阅读全文
posted @
2008-05-11 12:31
万一
阅读(6180)
推荐(0) 编辑
判断一个数组的长度用 Length 还是 SizeOf ?
摘要:最近发现一些代码, 甚至有一些专家代码, 在遍历数组时所用的数组长度竟然是 SizeOf(arr); 这不合适! 如果是一维数组、且元素大小是一个字节, 这样用看不出错误, 譬如: var arr1: array[0..9] of Char; arr2: array[0..9] of Byte; begin ShowMessageFmt('%d,%d,%d,%d',[Length(...
阅读全文
posted @
2008-04-23 22:26
万一
阅读(21811)
推荐(0) 编辑
关于 array of const
摘要:之前应该参考一下: 关于开放数组参数 //这是在 System 单元定义的一组标识数据类型的常量: vtInteger = 0; vtBoolean = 1; vtChar = 2; vtExtended = 3; vtString = 4; vtPointer = 5; vtPChar = 6; vtObject = 7; vtCl...
阅读全文
posted @
2008-04-17 22:03
万一
阅读(9667)
推荐(1) 编辑
数组竟然可以这样定义
摘要://这是常规思路: const arr: array[0..1] of Char = ('A','B'); begin ShowMessage(arr); {AB} ShowMessage(IntToStr(Length(arr))); {2} end; //没想到可以这样: const arr: array[Boolean] of Cha...
阅读全文
posted @
2008-04-17 15:01
万一
阅读(5107)
推荐(0) 编辑
理解 Delphi 的类(十) - 深入方法[21] - 开放数组参数
摘要://给一个整型开放数组求和的函数 function MyFun(const arr: array of Integer): Integer; var i: Integer; begin Result := 0; for i in arr do Result := Result + i; end; {测试1:} procedure TForm1.Button1Click(Sender...
阅读全文
posted @
2008-01-15 00:16
万一
阅读(7137)
推荐(0) 编辑
动态数组的释放
摘要://动态数组一般是不需要手动释放的, 如果需要... var arr: array of Integer; begin {设置动态数组维数} SetLength(arr,10); {释放方法一} arr := nil; {释放方法二} SetLength(arr, 0); {释放方法三} Finalize(arr); end;
阅读全文
posted @
2008-01-09 00:51
万一
阅读(10751)
推荐(1) 编辑
数组与子界
摘要:type TABC = 'A'..'G'; {定义子界} var abcArr: array[TABC] of Integer; {定义数组} abc: TABC; {定义子界变量} begin {数组赋值} abcArr['A'] := 11; abcArr['B'] := 22; abcArr...
阅读全文
posted @
2008-01-09 00:32
万一
阅读(3015)
推荐(0) 编辑