OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 11:03

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: Среда, 05 Октябрь, 2016 06:17 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Случайно наткнулся на возможность передавать параметру IN arr: ARRAY OF BaseRecType фактический массив ARRAY OF ExtensionOf(BaseRecType).

Как частный случай, IN arr: ARRAY OF ANYPTR может принимать массивы любых указателей на записи.

В описании языка нигде не нашёл об этом.

Примеры:

Код:
   PROCEDURE Test*;
      VAR arr: ARRAY 256 OF POINTER TO RECORD x: INTEGER END;
      
      PROCEDURE Proc (IN arr: ARRAY OF ANYPTR);
      BEGIN
      
      END Proc;
   
   BEGIN
      Proc(arr)
   END Test;

   PROCEDURE Test2*;
      TYPE
         T = POINTER TO EXTENSIBLE RECORD END;
         TEx = POINTER TO RECORD (T) END;
   
      VAR arr: ARRAY 256 OF TEx;
      
      PROCEDURE Proc (IN arr: ARRAY OF T);
      BEGIN
      
      END Proc;
   
   BEGIN
      Proc(arr)
   END Test2;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 05 Октябрь, 2016 08:31 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Словесная формулировка неправильная. Разве в примере речь не об указателях?

Что странного при такой работе с указателями?
Правила совместимости в Сообщении есть (одно из приложений).
Вы проверяли с пальцем по тексту?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 05 Октябрь, 2016 11:07 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ничего странного, это, в принципе, логично.

(Очевидно, конечно, что это действует только для IN-параметров).

Однако в описании этого всё же, видимо, нет.

Вопросы совместимости параметров - открытых массивов регулируются вот этим:
Цитата:
Совместимость по массивам [Array compatible]
Фактический параметр a типа Ta является совместимым по массивам с формальным параметром f типа Tf, если
1. Tf и Ta — эквивалентны, или
2. Tf — открытый массив, Ta — произвольный массив, и типы их элементов совместимы по массивам, или
3. Tf — открытый массив CHAR, и Ta имеет тип String, или
4. Tf — открытый массив SHORTCHAR, и Ta имеет тип Shortstring.


Таким образом, либо массив многомерный - и уходим на 2, либо в итоге терминальное правило 1, где речь об эквивалентности.
(3, 4 - не наш случай).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB