我有這樣的文件:升級的記錄文件和向後兼容性
file of record
Str: string[250];
RecType: Cardinal;
end;
但是使用這個文件我的客戶發現,該海峽永遠不會大於100個字符,也他需要更多的領域一段時間後。
在新版本中,我們有這樣的文件:
file of packed record
Str: string[200];
Reserved: array[1..47] of Byte;
NewFiled: Cardinal;
RecType: Cardinal;
end;
此記錄具有相同的大小,在海峽和RecType之間此前的紀錄是一個未使用的字節對齊時至8個字節。
問題:發生了什麼,當這個新文件將從舊代碼中獲得?他需要落後的兼容性。
舊代碼讀取樣本:
var
FS: TFileStream;
Rec: record
Str: string[250];
RecType: Cardinal;
end;
...
// reading record by record from file:
FS.Read(Rec, SizeOf(Rec));
您需要提供語言標籤和您的問題。對帕斯卡(或德爾福)不熟悉的人不知道你在這裏問了什麼,以及沒有標籤的人可能會錯過你的問題。 – 2013-02-15 00:22:56
你可以發佈一些讀取它的代碼嗎? – placeybordeaux 2013-02-15 00:25:09
在我看來,編寫一個快速測試應用程序非常簡單,該應用程序以新格式寫入一些記錄,然後嘗試使用舊格式讀取它們;它會立即回答這個問題,並且會給你一個你可以用於未來變化的測試。 – 2013-02-15 00:37:45