我要把一个旧项目从Delphi 7移到2007,看起来打包的对象
type
TMyTime = packed object
private
Year: Word;
Month: Byte;
Day: Byte;
Hour: Byte;
Minute: Byte;
Milliseconds: Word;
end;生成
Pascal错误*.pas(x):此处不允许E2006打包
D2007中的错误。
谁能告诉我哪个Delphi版本破坏了打包对象的兼容性?
发布于 2015-09-07 10:02:16
从QC10279“打包对象”编译错误中我们可以看到,该bug是在D2005中报告的,并且是在XE2中修复的。
发布于 2015-09-07 12:13:07
您可以在这里使用record而不是object:
type
TMyTime = packed record
Year: Word;
Month: Byte;
Day: Byte;
Hour: Byte;
Minute: Byte;
Milliseconds: Word;
end;或为object作用域本身启用打包:
type
{$A-} // packed object
TMyTime = object
private
Year: Word;
Month: Byte;
Day: Byte;
Hour: Byte;
Minute: Byte;
Milliseconds: Word;
end;
{$A+} // default un-packed 后者的优点是可以在Delphi 7和更新版本上编译。
对于Delphi2009及以后版本,尽量避免使用object 那是辆马车。使用增强的record类型代替-但你失去了继承..。
https://stackoverflow.com/questions/32434042
复制相似问题