delphi {$POINTERMATH ON} 方便指针操作的编译指令


本文整理自网络,侵删。

 {$POINTERMATH ON} 方便指针操作的编译指令

编译指令 PointerMath 默认 off; 打开后, 可以像数组一样地读写指针中的系列数据, 非常方便!
--------------------------------------------------------------------------------

//测试整数指针
procedure TForm1.Button1Click(Sender: TObject);
var
p: PInteger;
i: Integer;
begin
{$POINTERMATH ON}
//写入
p := GetMemory(SizeOf(Integer) * 4);
p[0] := 11;
p[1] := 22;
p[2] := 33;
p[3] := 44;

//读取
ShowMessageFmt('%d, %d, %d, %d', [p[0], p[1], p[2], p[3]]);
{$POINTERMATH OFF}

//之前有时会这么麻烦
ShowMessageFmt('%d, %d, %d, %d', [p^, PInteger(Integer(p) + SizeOf(Integer) * 1)^,
PInteger(Integer(p) + SizeOf(Integer) * 2)^,
PInteger(Integer(p) + SizeOf(Integer) * 3)^]);

FreeMemory(p);
end;

//测试结构体指针
procedure TForm1.Button2Click(Sender: TObject);
type
TMyRec = record
Name: string[12];
Age: Word;
end;
var
p: ^TMyRec;
begin
{$POINTERMATH ON}
p := GetMemory(SizeOf(TMyRec) * 2);

//写入
p[0].Name := '张三';
p[0].Age := 11;
p[1].Name := '李四';
p[1].Age := 22;

//读取
ShowMessageFmt('%s, %d', [p[0].Name, p[0].Age]);
ShowMessageFmt('%s, %d', [p[1].Name, p[1].Age]);

FreeMemory(p);
{$POINTERMATH OFF}
end;

相关阅读 >>

Delphi获得硬盘所有分区

两种方法用Delphi实现域名转ip地址---用nmhttp控件和winsock

Delphi 本地数据库备份与还原(Delphi)

Delphi 在 listbox 中放置一��可�� item 的 tedit �m件

Delphi 声明指令 调用左右

Delphi combobox 下拉事件

Delphi 把字符串复制到剪贴板

Delphi 获取闪盘列表

Delphi xe8中的正则表达式提取日语(平假名,片假名,汉字)

Delphi2010中使用pchar时e2010 incompatible types: 'char' and 'ansichar' 错误的处理

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...