Использование Delphi XE2 TPointerList

У меня возникла следующая проблема при попытке скомпилировать некоторые компоненты в XE2. Эти компоненты не были подготовлены для XE2, но я все равно пытаюсь их скомпилировать.

Внутри компонента он объявлен как

FList : TList;

при использовании это, например, как

SomeVariable := Integer(FList.List^[i]);

Выдает ошибку компиляции «Требуется тип указателя».

Я могу исправить это так

SomeVariable := Integer(FList.List[i]);

но бог знает, сколько времени мне понадобится, чтобы исправить все ошибки.

Есть ли какая-то директива компилятора или настройка, которая может справиться с этим. Я пробовал {$X} и {$T} безрезультатно.

В XE2 Delphi TPointerList (свойство TList.List) объявлен как динамический массив

type TPointerList = array of Pointer;

Если кто может помочь?


person Sofija    schedule 05.01.2012    source источник
comment
Нет, вы должны изменить сторонний код. Или получите обновление от поставщика кода.   -  person David Heffernan    schedule 05.01.2012
comment
Кроме того, ваша поправка неверна. Вы имеете в виду: Integer(FList.List[i])   -  person David Heffernan    schedule 05.01.2012
comment
Я думаю, что вы никогда не должны называть массив X списком, особенно в объявлении типа. Такая путаница будет только раздражать людей. Например, TList-типы имеют методы Add(x), тогда как массивы вообще не являются объектными типами, и вместо этого вам нужно установить SetLength. Таким образом, TSomethingList не является хорошим именем для псевдонима Array of Pointer.   -  person Warren P    schedule 05.01.2012
comment
@warren, вы должны обратиться к автору кода, emba   -  person David Heffernan    schedule 06.01.2012
comment
@david Вы правы насчет моего исправления, я забыл его отредактировать, теперь оно исправлено и здесь.   -  person Sofija    schedule 15.02.2012


Ответы (1)


а) Integer(FList[i]) тоже подойдет.

б) такой настройки нет.

c) Может быть, вы можете найти и заменить .List^[ -> [ ?

person gabr    schedule 05.01.2012
comment
Я буду использовать поиск и замену таким образом. Я только что узнал, что TList.List был изменен в XE2, это был PPointerList до XE2... - person Sofija; 05.01.2012