Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.21;
Скачать: CL | DM;

Вниз

Возможно интересный вопрос по указателям )   Найти похожие ветки 

 
Ksenom ©   (2006-05-07 22:32) [0]

Столкнулся с непонятной мне вещью.
Я создаю свой тип
type
   TDat = record
     Nod :byte;
     Id  :integer;
     Value:Variant;
 end;

Далее где то в коде делаю как положенно Dat:^TDat
Далее как и положенно New(Dat)
А теперь непонятное!

Dat.id:=123;
Dat^.id:=123;

Обе строки работают и более того аналогичным образом можно осуществлять доступ к значения.
Почему?
В книгах я читал что второй вариант правельный, но работает почему то и первый...
Буду благодарен если мне разъеснят этот вопрос.


 
Desdechado ©   (2006-05-07 22:49) [1]

> Обе строки работают
т.е выполняется присваивание?
а как насчет дальнейшей работы с указателем? не плюется?


 
jack128 ©   (2006-05-07 22:50) [2]

Ksenom ©   (07.05.06 22:32)
В книгах я читал что второй вариант правельный, но работает почему то и первый...

Потому борланды некоторое время назад расширили синтаксис.


 
Sergey Masloff   (2006-05-07 22:53) [3]

А чего разъяснять. Это ж рекорд. Для упрощения синтаксиса когда ты пишешь
Dat.id:=123;
реально все равно выполняется
Dat^.id:=123;

Ну просто в компилятор встроено.


 
Sergey Masloff   (2006-05-07 22:55) [4]

Desdechado ©   (07.05.06 22:49) [1]
>а как насчет дальнейшей работы с указателем? не плюется?
А чего ей плеваться? В рекордах методов не бывает же. Или я отстал и в паскале эту фигню уже разрешили?


 
Джо ©   (2006-05-07 22:59) [5]

> В рекордах методов не бывает же. Или я отстал и в паскале
> эту фигню уже разрешили?

Да, в D2006 уже есть.


 
Sergey Masloff   (2006-05-07 23:05) [6]

Джо ©   (07.05.06 22:59) [5]
>Да, в D2006 уже есть.
Прекрасно. Я рад что остановился на семерке. Дальнейшие ходы только укрепляют меня в правильности решения.


 
Ksenom ©   (2006-05-07 23:06) [7]

А в D2005? Я на нём творю )
Не плюётся... я тоже сначала подумал что упрощение, но как то непривычно )


 
Ksenom ©   (2006-05-07 23:08) [8]

Sergey Masloff, эксперементруй... D2005-2006 номного удобнее...


 
Kolan ©   (2006-05-07 23:09) [9]

Джо ©   (07.05.06 22:59) [5]
Правда что-ли? А зачем это надо? Есть же классы. И как это выглядит?


 
Sergey Masloff   (2006-05-07 23:12) [10]

Ksenom ©   (07.05.06 23:08) [8]
Спасибо. Ничего удобного там (в 2005) нет.
Для Win32 меня прекрасно устраивает семерка, для .NET использовать Delphi безумие.


 
Джо ©   (2006-05-07 23:47) [11]

> [9] Kolan ©   (07.05.06 23:09)
> Джо ©   (07.05.06 22:59) [5]
> Правда что-ли? А зачем это надо? Есть же классы. И как это
> выглядит?


type
 TMyRecord = record
   A: Integer;
   procedure B;
 end;

и аналогичная классам реализация.

Иногда удобно. Я часто использую как своего рода "конструкторы" для записей, реализацию проверки на равенство, и в тому подобных случаях.


 
Kolan ©   (2006-05-08 00:29) [12]

Ухты действительно. Только в чем преимушества/необходимость таких вешей так и не понял... :)

А где взять список нововведений с примерами?


 
Джо ©   (2006-05-08 00:54) [13]

> А где взять список нововведений с примерами?

Тут статья:
http://bdn.borland.com/article/0,1410,33411,00.html


 
jack128 ©   (2006-05-08 00:55) [14]

Kolan ©   (08.05.06 0:29) [12]
Только в чем преимушества/необходимость таких вешей так и не понял... :)

приемущество записи перед классом в том, что запись не нужно создовать, а самое главное - не нужно УНИЧТОЖАТЬ.



Страницы: 1 вся ветка

Текущий архив: 2006.05.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.073 c
2-1146570773
jenya_rus
2006-05-02 15:52
2006.05.21
Побайтная загрузка файла...


15-1146044448
Rule
2006-04-26 13:40
2006.05.21
Компания Borland приглашает 11 мая на семинар в Киеве


15-1145732092
DBwewq
2006-04-22 22:54
2006.05.21
Помогите пожалуйста! В чем ошибка! timer:longint absolute $40:$6c


1-1144745826
MiHoY
2006-04-11 12:57
2006.05.21
поиск дочернего окна


2-1146643356
Alex_C
2006-05-03 12:02
2006.05.21
Как получить CharSet шрифта