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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

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

Сообщение Climber » 20.01.2010 10:48:46

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

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

Сообщение Max Rusov » 20.01.2010 11:57:15

А режим совместимости с Delphi - включен?
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

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

Сообщение Astralis » 20.01.2010 12:40:36

Последний вариант и в Delphi работает и в borland pascal и в целом он более предпочтителен.
delphi language имеет некоторые послабления в работе с указателями, но не стоит ими злоупотреблять.
хотя использовать Edit1^.Text вместо Edit1.Text тоже наверное перебор
не удивлюсь если в delphi сработает
Код: Выделить всё
s2:=PropList[i].PropType.Name;
Аватара пользователя
Astralis
новенький
 
Сообщения: 45
Зарегистрирован: 06.06.2007 20:33:05
Откуда: Tvercity-Annet

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

Сообщение Vadim » 20.01.2010 15:57:14

Astralis писал(а):не удивлюсь если в delphi сработает
s2:=PropList[i].PropType.Name;

Обязательно сработает... :) Поэтому учить указатели по Дельфи - это взрыв мозга на макаронной фабрике. Люди постоянно путаются в статических и динамических переменных. :)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение and » 20.01.2010 20:04:12

Да-да-да! Я тоже карет в Delphi опускал везде, где только можно (на байтах экономил ;-) ), пока не понадобилось поработать с указателем на функцию (т.е. на процедурную переменную), возвращающую указатель :-) Легко запутаться в трёх соснах: где собственно указатель, а где то, на что он указывает.
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru