In Delphi 2009 hatte ich bisher keine größeren Probleme mit Generics (unter Verwendung von Generics.Collections-Listen, ohne spezielle Generics-Features).TObjectList <T> .Contains verursacht Zugriffsverletzung in Delphi 2009
Jetzt habe ich festgestellt, dass dieser Code ein AV in der Zeile verursacht, die auf MyList.Contains
zugreift.
Der Fehler verschwindet, wenn ich TMyList = class(TList<TMyEntry>)
;
Sollte ich vermeiden, TObjectList<T>
oder ist etwas anderes in meinem Code diesen Fehler verursacht?
type
TMyEntry = class(TStringlist);
TMyList = class(TObjectList<TMyEntry>);
procedure TListTests.TestAV;
var
Entry: TMyEntry;
MyList: TMyList;
begin
MyList := TMyList.Create;
try
Entry := TMyEntry.Create;
MyList.Add(Entry);
Assert(MyList.Contains(Entry)); // <--- AV
finally
MyList.Free;
end;
end;
Verwandte: http://stackoverflow.com/questions/4216733/ generic-tlist-in-delphi-2009-crash-on-indexof –
@VilleKrumlinde Ich würde nicht nur sagen, verwandt, ich würde sagen, es ist genau das selbe Ing. 'TObjectList <>' leitet sich von 'TList <>' ab, also werden Fehler in 'TList <>' auch in 'TObjectList <>' angezeigt. – hvd