#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: Спасибо. Это был действительно полезный проект для работы.