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


//例子中的三个变量让 absolute 都给弄到一块了, 这有时会很方便; 但我总也想不到用, 还是不熟.
procedure TForm1.FormCreate(Sender: TObject);
var
  num: Int64;
  pt: TPoint absolute num;
  arr: array[0..1] of Integer absolute pt;
begin
  pt.X := 111;
  pt.Y := 222;

  ShowMessageFmt('%d, %d', [arr[0], arr[1]]);                {111, 222}
  ShowMessageFmt('%d, %d', [num shl 32 shr 32, num shr 32]); {111, 222}
end;


在这里补充回复 "followers" 在下面提出的问题:

absolute 可让变量共享内存; 共享内存的其中一个变量赋值后, 其他变量会同时改变.

如果不用 absolute, 使用类型转换也可以, 不过这样更方便.

另外, Delphi 的可变记录、变体类型和 C 语言的联合也都是这个原理, 不如看个表更直观:

Int64: 1 2 3 4 5 6 7 8
TPoint: X Y
本例数组: arr[0] arr[1]
Integer: 1 2 3 4
Word: 1 2
Byte: 1

posted on   万一  阅读(7202)  评论(2编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2008-02-19 WinAPI: waveInClose - 关闭指定的波形输入设备
2008-02-19 WinAPI: waveInAddBuffer - 向波形输入设备发送一个输入缓冲区
2008-02-19 动画演示 Delphi 2007 IDE 功能[2] - 定义变量
2008-02-19 颜色转换函数: 从 Delphi 到 Html
2008-02-19 Delphi 中的颜色常量及效果图
2008-02-19 动画演示 Delphi 2007 IDE 功能[1] - 建立工程、添加控件


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