Nach dem Upgrade auf XE8 beginnen einige unserer Projekte Daten zu brechen. Sieht wie ein Fehler in TList Realisierung aus.Delphi XE8 Fehler in TList <T>, benötigen Abhilfe.
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.
Dieser Code druckt "123" in XE7 und vor (wie es sein sollte), aber in XE8 druckt es "120". Vielleicht kennt jemand einen Quickfix dafür?
Update: inoffizielle Update ist here
Die generischen Sammlungen haben in XE8 neu implementiert worden. Vielleicht haben sie bei Emba keine Unit-Tests. Wenn dies so ist, wie Sie es beschreiben, und es wahrscheinlich ist, ist Ihre Lösung, auf XE7 zu bleiben. Sie müssen einen Fehlerbericht einreichen. –
Berichtet als [Regression: TList. Einfügen funktioniert nicht] (https://quality.embarcadero.com/browse/RSP-10773). –
Es scheint also, dass Embarcadero kein effektives Testsystem hat. Wie um alles in der Welt konnten sie das falsch verstanden haben? Solch eine grundlegende Klasse. Ein gut geführtes Entwicklerteam hätte dies umfassend getestet. Solch ein Fehler sollte niemals über diesen Test hinausgehen. Dismal. –