Свойства и приватные методы у записей: а что,так можно было?

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

Ответить
Аватара пользователя
Cheb
энтузиаст
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34
Контактная информация:

Свойства и приватные методы у записей: а что,так можно было?

Сообщение Cheb »

Поглядел в исходники RTL - и ощутил себя дятлом не одупляющим

Код: Выделить всё

TVmt = record
         vInstanceSize: SizeInt;
         vInstanceSize2: SizeInt;
         vParentRef: {$ifdef VER3_0}PVmt{$else}PPVmt{$endif};
          ...
       private
         function GetvParent: PVmt; inline;
       public
         property vParent: PVmt read GetvParent;
       end;
А... А так можно, получается?.. :oops:
А я столько городушек городил... :cry:

С каких пор так можно? Когда эту фичу припилить успели?
Когда я в 2002-м изучал Фри Паскаль 1.0.6 - помнится, так нельзя было.

Добавлено спустя 5 минут 15 секунд:
Так... В фпц 2.6.4 было:

Код: Выделить всё

       TVmt = record
         vInstanceSize: SizeInt;
         vInstanceSize2: SizeInt;
         vParent: PVmt;
         ...
       end;
- т.е. проперти эту добавили для обратной совместимости после изменения унутренних форматов.
iskander
энтузиаст
Сообщения: 627
Зарегистрирован: 08.01.2012 18:43:34

Сообщение iskander »

Cheb писал(а):С каких пор так можно? Когда эту фичу припилить успели?
Емнип начиная с 2.6.0.
MiniQ
новенький
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Сообщение MiniQ »

включается так
{$modeSwitch advancedRecords}
Аватара пользователя
Cheb
энтузиаст
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34
Контактная информация:

Сообщение Cheb »

MiniQ писал(а):включается так
Аааа... Я всё это время... :oops: :cry:
Даже не подозревал.
Какой позор.
Mikhail
энтузиаст
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Сообщение Mikhail »

Cheb писал(а):
MiniQ писал(а):включается так
Аааа... Я всё это время... :oops: :cry:
Даже не подозревал.
Какой позор.
Еще можно операторы перегружать

А с версии 3.2.2 еще и так можно
https://wiki.freepascal.org/management_operators
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

Это чтобы программа точно не заработала стабильно никогда.
Нахрена оно надо? Есть классы, есть рекорды(просто пакет данных). Нахрена городить огород? :x :evil:
Mikhail
энтузиаст
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Сообщение Mikhail »

Sharfik писал(а):Это чтобы программа точно не заработала стабильно никогда.
Нахрена оно надо? Есть классы, есть рекорды(просто пакет данных). Нахрена городить огород? :x :evil:
На стабильность это влияет строго положительно. Рекорды,в отличие от классов, могут находится на стеке, например.
Аватара пользователя
Cheb
энтузиаст
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34
Контактная информация:

Сообщение Cheb »

Mikhail писал(а):А с версии 3.2.2 еще и так можно
Вааай :D
Спасибо, не знал :)
Ответить