Страница 1 из 1

Указатели взрывают мозг

СообщениеДобавлено: 20.01.2010 10:48:46
Climber
Начал активно изучать RTTI, читаю книгу Пачеко "Delphi 6".
Например, там приводится такой код:
Код: Выделить всё
var
  PropList: PPropList;
  s2: string;
...
s2:=PropList[i]^.PropType^.Name;
FPC с таким кодом работать отказывается - ругается на последнюю строку. Поиски методом научного тыка дали такой результат:
Код: Выделить всё
s2:=PropList^[i]^.PropType^.Name;
Такая строка не только компилируется, но и дает ожидаемый от нее результат.
Почему так? А главное, почему от Delphi отличается?

Re: Указатели взрывают мозг

СообщениеДобавлено: 20.01.2010 11:57:15
Max Rusov
А режим совместимости с Delphi - включен?

Re: Указатели взрывают мозг

СообщениеДобавлено: 20.01.2010 12:40:36
Astralis
Последний вариант и в Delphi работает и в borland pascal и в целом он более предпочтителен.
delphi language имеет некоторые послабления в работе с указателями, но не стоит ими злоупотреблять.
хотя использовать Edit1^.Text вместо Edit1.Text тоже наверное перебор
не удивлюсь если в delphi сработает
Код: Выделить всё
s2:=PropList[i].PropType.Name;

Re: Указатели взрывают мозг

СообщениеДобавлено: 20.01.2010 15:57:14
Vadim
Astralis писал(а):не удивлюсь если в delphi сработает
s2:=PropList[i].PropType.Name;

Обязательно сработает... :) Поэтому учить указатели по Дельфи - это взрыв мозга на макаронной фабрике. Люди постоянно путаются в статических и динамических переменных. :)

Re: Указатели взрывают мозг

СообщениеДобавлено: 20.01.2010 20:04:12
and
Да-да-да! Я тоже карет в Delphi опускал везде, где только можно (на байтах экономил ;-) ), пока не понадобилось поработать с указателем на функцию (т.е. на процедурную переменную), возвращающую указатель :-) Легко запутаться в трёх соснах: где собственно указатель, а где то, на что он указывает.