Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.09.2013, 03:49   #1
BizCray
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 15
По умолчанию Работа со "Списком"

Добрый день.

Хотелось бы разобраться с одним вопросом.
Сам допереть не могу. :-(
А наступить в дальнейшем на грабли не хочется.

Есть классический список:
Код:
TPList = ^TList;

TList = record
 date : String;
 next : TPList;
end;
Не могу понять разницу в коде:
Код:
Var
 start : TPList;

begin
 new (start);
 start.date := 'abd';
 Showmessage(start.date);
 ShowMessage(start^.date);
end;
Выводит одно и то же? Делфи насколько умный, что разницы нет?
Пробовал своими силами понять, но разницы не вижу. Кто подскажет?

Спасибо.
BizCray вне форума
Старый 27.09.2013, 08:54   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,883
По умолчанию

Дельфи умеет определять ситуацию, когда у указателя на запись хотят взять данные, как у записи, и сама разыменовывает (в получающемся машинном коде). Как писать - решать исключительно Вам, но обычно люди указывают ^ чтобы не путаться самим.
phomm вне форума
Старый 27.09.2013, 10:09   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
Выводит одно и то же? Делфи насколько умный, что разницы нет?
Раньше была разница, т.к. без ^ компилятор пытался получить данные самого адреса указателя, сейчас компилятор поумнел и сам определяет, как обращаться к указателю.
Человек_Борща вне форума
Старый 27.09.2013, 12:47   #4
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Цитата:
Сообщение от BizCray Посмотреть сообщение
Делфи насколько умный, что разницы нет?
Да, это одна из тех штук, что входят в "Extended syntax" в настройках компилятора или {$X+} директивой. Помимо умного разыменования указателей включает в себя также адресную арифметику для PChar и PWideChar.

Расширенный синтаксис впервые появился в Turbo Pascal 6.0 и нужен был для Turbo Vision.
Vapaamies вне форума
Старый 27.09.2013, 20:43   #5
BizCray
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 15
По умолчанию

Спасибо огромное.
Теперь чётко понимаю что делаю.
Вопрос снят. :-)
BizCray вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа функциями "ЕСЛИ", "И" и вывод текстового результата johny_03 Microsoft Office Excel 3 04.08.2014 11:01
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Списки. Разработать модуль для работы со списком типа "множество". lvirusl Паскаль, Turbo Pascal, PascalABC.NET 9 29.06.2011 01:08
Создание кнопки "сброс все данных" и автоматического поля со списком Рыжулька Microsoft Office Excel 7 11.12.2010 09:11
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04