升级到XE8后,我们的一些项目开始打破数据。 看起来像TList实现中的一个错误。 program XE8Bug1; {$APPTYPE CONSOLE} uses System.SysUtils, Generics.Collections; type TRecord = record A: Integer; B: Int64; end; var FRecord: TRecord; FList: TList<TRecord>; begin FList := TList<TRecord>.Create; FRecord.A := 1; FList.Insert(0, FRecord); FRecord.A := 3; FList.Insert(1, FRecord); FRecord.A := 2; FList.Insert(1, FRecord); Writeln(IntToStr(FList[0].A) + IntToStr(FList[1].A) + IntToStr(FList[2].A)); end. 此代码在XE7中打印“123”,之前(应该是这样),但在XE8中打印“120”。 也许有人知道这个quickfix? 更新:非官方修复在这里