OberonCore https://forum.oberoncore.ru/ |
|
[256] вместо полей записи. Описано ли где-либо подобное? https://forum.oberoncore.ru/viewtopic.php?f=30&t=6262 |
Страница 1 из 1 |
Автор: | Artyemov [ Воскресенье, 15 Июль, 2018 19:09 ] |
Заголовок сообщения: | [256] вместо полей записи. Описано ли где-либо подобное? |
На RPi3 в среде Ofront 1.4 (Oberon V4) модуль Display.Mod содержит тип "нуль-запись": Цитата: TYPE Bytes* = (*X11.Bytes*)RECORD END; Font* = (*X11.Font*) POINTER TO Bytes; Команда Browser.ShowDef для этого модуля выдала непонятное мне, но крайне заинтересовавшее, определение: Цитата: TYPE Bytes = RECORD [256] END; Font = POINTER TO Bytes; Попробовал описать тип "нуль-запись" с числом в []: транслятор ругается "SYSTEM not imported" и caret указывает на первую скобку. Добавил импорт SYSTEM: "illegal value of parameter" число в скобках. Квадратные скобки и их содержимое как расценивать? |
Автор: | Comdiv [ Понедельник, 16 Июль, 2018 13:33 ] |
Заголовок сообщения: | Re: [256] вместо полей записи. Описано ли где-либо подобное? |
Ещё интересно, откуда взялся Ofront на RPI3. Шёл в стандартной поставке одной из доступных ОС? |
Автор: | Artyemov [ Понедельник, 16 Июль, 2018 20:04 ] |
Заголовок сообщения: | Re: [256] вместо полей записи. Описано ли где-либо подобное? |
Comdiv писал(а): Ещё интересно, откуда взялся Ofront на RPI3. Шёл в стандартной поставке одной из доступных ОС? От Темпля. Свежак Copyright 1995-2016, Software Templ OG. All rights reserved. http://www.software-templ.com/shareware.html Нет не шёл, но причин не установить нет. Любезное сообщество, ну может кто в курсе про "[]" в нуль-записи? |
Автор: | Сергей Оборотов [ Вторник, 17 Июль, 2018 12:27 ] |
Заголовок сообщения: | Re: [256] вместо полей записи. Описано ли где-либо подобное? |
Artyemov писал(а): Добавил импорт SYSTEM: "illegal value of parameter" число в скобках. Правильно ругается. В этой версии Оберона: Код: IF (sf < 0) OR (sf > OPM.MaxSysFlag) THEN err(220); sf := 0 END Значение sysflag более 255 используется в OfrontOPC.NofPtrs для исключения подсчетов. |
Автор: | Artyemov [ Вторник, 17 Июль, 2018 17:16 ] |
Заголовок сообщения: | Re: [256] вместо полей записи. Описано ли где-либо подобное? |
Я не в претензии, но синтаксическая конструкция с числом в "[]" после RECORD нигде ж не описана. |
Автор: | Сергей Оборотов [ Вторник, 17 Июль, 2018 21:09 ] |
Заголовок сообщения: | Re: [256] вместо полей записи. Описано ли где-либо подобное? |
Описывают в приложениях к описаниям, как небезопасное расширение синтаксиса для системных нужд. В некоторых версиях ещё и фигурные скобки для флагов используют. |
Автор: | Oleg N. Cher [ Среда, 18 Июль, 2018 03:12 ] |
Заголовок сообщения: | Re: [256] вместо полей записи. Описано ли где-либо подобное? |
Artyemov писал(а): Цитата: TYPE Bytes = RECORD [256] END; Квадратные скобки и их содержимое как расценивать? В данном случае утилита showdef показывает это число как сырое значение системного флага записи. Это внутренний код, который может обозначать, например, безтеговую запись. Иногда транслятор разрешает использовать в качестве системного флага и идентификатор этого флага, и число, обозначающее его внутренний код. Максимальное значение числа, ровно как и то, какие числа транслятор пропустит, это уже зависит от реализации. BlackBox тоже разрешает запись Код: RECORD [1] как аналог Код: RECORD [untagged] Смотрим в коде BrowserCmd как устроен этот вывод: Код: PROCEDURE SysFlag; BEGIN IF typ^.sysflag # 0 THEN Wch("["); Wi(typ^.sysflag); Ws("] ") END END SysFlag; BEGIN CASE typ^.form OF ... | Record: Ws("RECORD "); SysFlag; IF typ^.BaseTyp # NIL THEN Wch("("); Wtype(typ^.BaseTyp); Wch(")") END ; Ofront хранит в системном флаге типа "запись" не только внутренний код флага (биты {0..7}), но и системное выравнивание записи (биты {8..14}). Это внутренняя информация транслятора, нужная для правильного расчёта выравнивания полей при расширении записи. |
Автор: | Artyemov [ Среда, 18 Июль, 2018 19:52 ] |
Заголовок сообщения: | Re: [256] вместо полей записи. Описано ли где-либо подобное? |
Спасибо. Получается я влез в дебри. |
Автор: | Oleg N. Cher [ Четверг, 19 Июль, 2018 01:52 ] |
Заголовок сообщения: | Re: [256] вместо полей записи. Описано ли где-либо подобное? |
Не совсем. Просто, видимо, Йозефу было удобно видеть сырое значение флагов в браузере при просмотре интерфейса модуля. Может быть, для нужд отладки. Так и осталось, исправлять не стал. А можно было бы исправить. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |