我正在将一个旧项目从Delphi 7移动到2007年,它似乎是打包的对象
type
TMyTime = packed object
private
Year: Word;
Month: Byte;
Day: Byte;
Hour: Byte;
Minute: Byte;
Milliseconds: Word;
end;
生成
D2007中的[Pascal Error] * .pas(x):E2006 PACKED不允许在这里
错误。
可能有人告诉我哪个Delphi版本打破了打包对象的兼容性?
答案 0 :(得分:4)
从QC10279 "packed object" compilation error我们可以看到该错误已在D2005中报告并在XE2中得到修复。
答案 1 :(得分:2)
您可以在这里使用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和更新版本上进行编译。
对于Delphi 2009及更高版本,请尽量避免使用object
which is buggy。改为使用增强型record
类型 - 但您会失去继承......