我有这样的文件:
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));