Использование угловых скобок (я видел людей, использующих TList)

#delphi #generics #casting #tlist

#delphi #общие #Кастинг #tlist

Вопрос:

Я вижу людей, объявляющих свои TLists как

 MyList : TList<PSomeType>;
  

После чего, когда они создают его, они делают

 MyList := TList<PSomeType>.Create;
  

Итак, я полагаю, что, делая это, им не придется вводить тип myList.Элементы [I] всякий раз, когда они его используют, например:

 ShowMessage( PSomeType(MyList.Items[I]).SomeTextProperty );
  

Поэтому вместо этого они просто делали

 ShowMessage( MyList.Items[I].SomeTextProperty );
  

Это правильно?

Если это так, то почему я не могу заставить это работать в Delphi 2010? Я пытаюсь именно это — объявляю свой список как

MyList : TList<PSomeType>;

Но компилятор говорит:

Необъявленный идентификатор: TList<>

Что я там делаю не так?

Ответ №1:

Эти люди используют общий список. TList<T> это общая версия TList, и она объявлена в модуле Generics.Collections , а не в Classes , где TList находится. Добавьте Generics.Collections в свой список применений, и все должно быть в порядке.

Комментарии:

1. на 20 секунд быстрее. 🙂 1 и удаление моего ответа.

2. 1 — будет отмечен как ответ, как только S.O позволит мне. Спасибо! 🙂 Также, видел вашего создателя RPG, очень приятный человек!

3. @Jeff: Спасибо. Это был действительно полезный проект для работы.