Dopo l'aggiornamento a XE8 alcuni dei nostri progetti iniziano a suddividere i dati. Sembra un bug nella realizzazione di TList.Bug Delphi XE8 in TList <T>, è necessario risolvere il problema
stampeprogram 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.
questo codice "123" in XE7 e prima (come dovrebbe essere), ma in XE8 esso stampa "120". Forse qualcuno conosce un quickfix per questo?
Aggiornamento: fix non ufficiale è here
Le collezioni generici sono stati ri-implementato in XE8. Forse non hanno alcun test unitario all'Emba. Se questo è come descrivi, e sembra probabile, la tua soluzione è rimanere su XE7. Devi presentare una segnalazione di bug. –
Segnalato come [Regressione: TList .Inserimento non funzionante] (https://quality.embarcadero.com/browse/RSP-10773). –
Quindi sembra che l'Embarcadero non abbia un regime di test efficace. Come diavolo avrebbero potuto sbagliare? Una classe così fondamentale. Un team di sviluppo ben gestito avrebbe testato questo apparecchio in modo completo. Tale errore non dovrebbe mai superare questo test. Triste. –