Delphi 10.4 新变化:定制拖管记录(结构)类型


本文整理自网络,侵删。

 
原文链接 此文为简略翻译,更详细内容请访问原文。

现有的 Delphi 中的记录如果包含复杂类型,如接口、动态数组等初始化和记录的赋值都是由 Delphi 默认提供的过程完成的,10.4 允许用户定制这些操作,只要用户实现对应的函数就可以。

初始化函数, 重载类操作 Initialize
清理函数,重载类操作 Finalize
赋值函数,用于做深拷贝,重载类操作 Assign
示例
type
  TMyRecord = record
    Value: Integer;
    class operator Initialize (out Dest: TMyRecord);
    class operator Finalize(var Dest: TMyRecord);
class operator Assign (var Dest: TMyRecord; const [ref] Src: TMyRecord);
  end;


使用
声明实例时,会自动调用 Initialize 函数,对记录内容进行初始化。
记录赋值给另一个实例时,会自动调用 Assign 函数,完成值拷贝。
实例作用域结束或者调用 Dispose 释放时,会自动 Finalize 函数,对记录内容进行清理。
其它方面和正常的记录完全一样。
用途
由于记录可以在栈上声明,利用其自动清理特性,就可以做出一些神奇的东西 ,比如自动管理对象的生命周期,实现 C++ 里的 auto_ptr 类似的功能。
减少内存泄漏等问题的发生。

来源:https://community.idera.com/developer-tools/b/blog/posts/custom-managed-records-coming-to-delphi-10-4

相关阅读 >>

Delphi中string与pansichar转换

Delphi 中文大写日期转换函数

Delphi tarray<tarray<string>> 用法

Delphi 查看所有的串口设备

Delphi dos编程

Delphi多线程图片转换类实现

Delphi调用阿里云的对象存储服务oss

Delphi txt日志log

Delphi操作access

Delphi access violations 问题的解决之道

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



打赏

取消

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

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

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

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

评论

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