Board logo

Subject: 自动实例化的功能 [Print This Page]

Author: 西方失败    Time: 2026-10-7 13:37     Subject: 自动实例化的功能

由于Delphi语言的特点不能像其他语言在定义的时候可以加个New完成实例化
只能在Begin后面实例化,这样就得再写一次
比如

var
lst:Tlist<string>;
sb: TStringBuilder;
hs:THashset;
......
Begin
lst := Tlist<string>.Create;
sb := TStringBuilder.Create;
hs:= THashset<string>.Create;
......
End;

不知道cnpack有没有这种自动实例化的功能,有的话就太省事了
在Begin后面自动写上即可,没有的话老大觉得有价值加个吗,谢谢!

[ 本帖最后由 西方失败 于 2026-10-7 13:47 编辑 ]
Author: 小帆    Time: 2026-10-7 15:17

用内联变量,直接搞:

Begin
var lst := Tlist<string>.Create;
var sb := TStringBuilder.Create;
var hs := THashset<string>.Create;
End;

只是要注意作用区间。
Author: 西方失败    Time: 2026-10-7 15:54

确实目前只能这么搞 只不过总觉得有点别扭
Author: Passion    Time: 2026-10-7 16:05

可以看看我们脚本专家中的GenVarObjCodes.pas例子,在安装目录的PSDemo目录下。
本脚本能够根据 var 区声明的对象变量生成对应的创建释放代码块。
Author: 西方失败    Time: 2026-10-11 17:42

厉害,确实出来了,但是变量成乱码了怎么回事呢.
cw版本 1.8.2.1374_Preview Build 2026.10.08

Image Attachment: 20261011-1.png (2026-10-11 17:43, 42.99 K) / Download count 1
http://bbs.cnpack.org/attachment.php?aid=1219


Author: Passion    Time: 2026-10-11 21:37

是D几?
Author: Passion    Time: 2026-10-11 22:14

知道了,是ExtractStrings函数在Unicode版Delphi的脚本引擎中有Bug导致了乱码,我想想如何修。
Author: 西方失败    Time: 2026-10-11 22:37

哦哦 还不知道中文有没问题




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0