В Delphi 2009 у меня до сих пор не было серьезных проблем с Generics (с использованием списков Generics.Collections без специальных функций Generics).
Теперь я обнаружил, что этот код вызовет «недопустимую операцию указателя» в строке, которая обращается к MyList.Count
. (MyList.Contains и MyList.IndexOf вызывают ту же ошибку).
Ошибка исчезнет, если я объявлю TMyList = class(TList<TMyEntry>)
;
Должен ли я избегать TObjectList<T>
или что-то еще в моем коде вызывает эту ошибку?
type
TMyEntry = class(TStringlist);
TMyList = class(TObjectList<TMyEntry>);
procedure TListTests.TestAV;
var
Entry: TMyEntry;
MyList: TMyList;
begin
MyList := TMyList.Create;
try
Entry := TMyEntry.Create;
try
MyList.Add(Entry);
Assert(MyList.Count = 1); // <--- fails
finally
Entry.Free;
end;
finally
MyList.Free;
end;
end;