我有这样一个文件:
file of record
Str: string[250];
RecType: Cardinal;
end;
但是在使用此文件一段时间后,我的客户发现,Str永远不会超过100个字符,并且他需要额外的字段。
在新版本中,我们有这样的文件:
file of packed record
Str: string[200];
Reserved: array[1..47] of Byte;
NewFiled: Cardinal;
RecType: Cardinal;
end;
这条记录和之前的记录大小相同,在 Str 和 RecType 之间有一个未使用的字节,当对齐到8个字节时。
问题:当旧代码读取此新文件时会发生什么?需要向后兼容。
旧代码读取示例:
var
FS: TFileStream;
Rec: record
Str: string[250];
RecType: Cardinal;
end;
...
// reading record by record from file:
FS.Read(Rec, SizeOf(Rec));