Господа, с Delphi 100 лет дела не имел, так что простите за вопрос чайника.
В коде есть примерно вот такое (кое-что опущено).
procedure X(SortList, MetaList: PPointerList);
//...
T := SortList^[I];
SortList^[I] := SortList^[J];
SortList^[J] := T;
K := MetaList[I];
MetaList[I] := MetaList[J];
MetaList[J] := K;
/...
end;
Turbo Delphi 2006 года с таким кодом вполне согласна и умпешно его компилирует. Delphi XE2 ругается
[DCC Error] X.pas(427): E2016 Array type required
Заменяю на
K := MetaList^[I];
MetaList^[I] := MetaList^[J];
MetaList^[J] := K;
теперь все компилируется и даже вроде работает.
ИМХО первый вариант ошибочен (применение индекса к немассиву, да и вообще непонятно, почему с SortList используется ^, а с MetaList — нет), но тогда почему его Turbo Delphi пропускает ? А если он не ошибочен (говорю же, давно с Delphi дел не имел), то почему XE2 им недовольна ? В XE2 изменения в языке ? Или можно где-то в опциях восстановить прежнее поведение ?
Проблема в объявлении переменной "T". Но так как ты посчитал этот код не существенным, то конкретно в чем проблема не скажу.
Здравствуйте, Pavel Dvorkin, Вы писали:
В XE2 используй директиву компилятора {$POINTERMATH ON}