问题已结束(答案已接受)替换为Delphi 7:访问冲突 - TByteDynArray 问题 https://stackoverflow.com/questions/3157732/delphi-7-access-violation-tbytedynarray-problem)
我收到以下声明
MyPhoto = class(TRemotable)
private
FhasPhoto: Boolean;
FphotoData: TByteDynArray;
published
property hasPhoto: Boolean read FhasPhoto write FhasPhoto;
property photoData: TByteDynArray read FphotoData write FphotoData;
end;
我想要
var photo : MyPhoto;
photo := MyPhoto.Create();
SetLength(photo.photoData, 4);
但我得到
[Error] mainForm.pas(340): Constant object cannot be passed as var parameter
1)鉴于我无法更改类 Photo 的定义,如何正确编码?
2)我可以通过分配任何结构来有效地将其“转换”为 TByteDynArray 吗?
(正如您可能已经猜到的,我是一名 BCB 人,试图进入 Ddlphi :-)
p.s 我会满足于能够单独分配照片数据的每个字节......
这是Delphi 属性实现中的一个缺陷。即使该属性可以读取和写入,即使读取和写入都指向基础对象中的同一字段,您也无法将属性传递给var参数,例如 SetLength。这没有什么充分的理由,但至少目前是这样的。
不过,这个问题有一个相当简单的解决方法。您需要对象上的一个方法,该方法采用整数并在内部设置 FPhotoData 的长度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)