OberonCore
https://forum.oberoncore.ru/

#023 текстовые ресурсы для модуля, результат чтения цепочки
https://forum.oberoncore.ru/viewtopic.php?f=134&t=6559
Страница 1 из 1

Автор:  Евгений Темиргалеев [ Вторник, 18 Февраль, 2020 22:40 ]
Заголовок сообщения:  #023 текстовые ресурсы для модуля, результат чтения цепочки

Предлагаю:

1) Добавить процедуры, которые выдают результат поиска подстановки, в Dialog:
Цитата:
PROCEDURE MapParamStringRes (IN in, p0, p1, p2: ARRAY OF CHAR; OUT out: ARRAY OF CHAR; OUT res: INTEGER)
PROCEDURE MapStringRes (IN in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR; OUT res: INTEGER)
Аналоги MapParamString/MapString, выдающие результат подстановки res:
0 — успешно
6 — результат целиком не влез, обрезан
1..3 — ошибка синтаксиса in
4 — не считался файл с текстовыми ресурсами
5 — ключ не найден

2) Добавить поддержку ресурсов для отдельных модулей. Подробнее см. https://oberoncore.ru/library/temir_opr ... _ble_kboks
Цитата:
Форма "#SubsystemModule:message" указывает на файл текстовых ресурсов "ModuleStrings" в каталоге "Rsrc" подсистемы System.


3) Технически выделить библиотечный модуль, поддерживающий текстовые ресурсы, из Dialog для сокращения объема исходного текста и прояснения структуры в целях упрощения поддержки. Процедуры Dialog переадресуются на внутрений модуль:
Код:
DEFINITION Textrsrc;
   PROCEDURE FlushMappings;
   PROCEDURE MapParamString (IN in, p0, p1, p2: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
   PROCEDURE MapParamStringRes (IN in, p0, p1, p2: ARRAY OF CHAR; OUT out: ARRAY OF CHAR; OUT result: INTEGER);
   PROCEDURE MapString (IN in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
   PROCEDURE MapStringRes (in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR; OUT result: INTEGER);
   PROCEDURE SetLanguage (x: ARRAY OF CHAR);
END Textrsrc.

Автор:  adimetrius [ Четверг, 20 Февраль, 2020 16:00 ]
Заголовок сообщения:  Re: Доб. текстовые ресурсы для модуля, результат чтения цепо

Встречное минималистичное предложение, чтобы не усложнять интерфейс Dialog

MODULE Dialog;
VAR mapRes*: INTEGER; (** Результат последней операции MapString/MapParamString *)
PROCEDURE MapString...;
PROCEDURE MapParamString...;
END Dialog.

А если нужно вынести реализацию в другой модуль - то через хук, кмк. Но для чего? Dialog не оч большой модуль, всего 43кб

Автор:  Евгений Темиргалеев [ Пятница, 21 Февраль, 2020 21:23 ]
Заголовок сообщения:  Re: Доб. текстовые ресурсы для модуля, результат чтения цепо

Можно оставить в Dialog. Это не принципиально. Можно возвращать через глобальный VAR res. Тоже не принципиально.

Главный вопрос -- это пункт 2. Добавить поддержку ресурсов для отдельных модулей. Потому что, как отметил в соседней ветке Trurl, отдельный плагин отдельной папкой звучит привлекательно, но не работает.

Это расширение функциональности без потери обратной совместимости.

Автор:  Иван Денисов [ Понедельник, 24 Февраль, 2020 05:59 ]
Заголовок сообщения:  Re: Доб. текстовые ресурсы для модуля, результат чтения цепо

Тогда придется делать пакетный менеджер, чтобы разобраться с этой бедой...
Я за то, чтобы следовать правилу: одно расширение — одна новая директория. Признаю свои ошибки и переделаю все расширения, чтобы этого избежать.
Если кто-то не следует правилу, то у него должны быть проблемы. А тут получается с ресурсами для модулей, что мы поощряем отклонение от задумки.

Автор:  Иван Денисов [ Понедельник, 24 Февраль, 2020 08:32 ]
Заголовок сообщения:  Re: Доб. текстовые ресурсы для модуля, результат чтения цепо

С другой стороны, мы делаем 1.8 для сообщества. И если всем будет удобно иметь ресурсные файлы для модулей, что за много лет практики все признают, что так надо, то наверное ничего не поделаешь. Давайте может проведем опрос?

Автор:  Евгений Темиргалеев [ Понедельник, 24 Февраль, 2020 17:03 ]
Заголовок сообщения:  Re: Доб. текстовые ресурсы для модуля, результат чтения цепо

Иван, люди уже дорожку протоптали по диагонали. Потому что в ББ "минимальный компонет -- это модуль", а не подсистема. В 2013 году я об этом писал (https://oberoncore.ru/library/temir_opr ... _ble_kboks).
Мы, например, 7 лет как это решение эксплуатируем. При том, что обратной совместимости оно не ломает. Хочешь, определяй текстовые ресурсы на уровне подсистемы, хочешь -- на уровне модуля.

Автор:  Иван Денисов [ Понедельник, 24 Февраль, 2020 19:33 ]
Заголовок сообщения:  Re: Доб. текстовые ресурсы для модуля, результат чтения цепо

У меня предложение это внедрить, но договориться такой путь не продвигать в массы пока не будет пакетного менеджера.
Так получается путь садизма. Установил расширение и потом не понятно как его удалить.

Автор:  Евгений Темиргалеев [ Понедельник, 25 Январь, 2021 02:06 ]
Заголовок сообщения:  Re: #023 текстовые ресурсы для модуля, результат чтения цепо

Поднимаю тему. Готов сделать ветку с правками. По минимуму -- подправить реализацию в Dialog, добавить VAR mapRes*: INTEGER.

Автор:  Иван Денисов [ Понедельник, 25 Январь, 2021 05:22 ]
Заголовок сообщения:  Re: #023 текстовые ресурсы для модуля, результат чтения цепо

Евгений Темиргалеев писал(а):
Поднимаю тему. Готов сделать ветку с правками. По минимуму -- подправить реализацию в Dialog, добавить VAR mapRes*: INTEGER.
Хорошо, тут вроде всё обсудили, больше предложений и замечаний нет.

Автор:  Евгений Темиргалеев [ Вторник, 26 Январь, 2021 11:32 ]
Заголовок сообщения:  Re: #023 текстовые ресурсы для модуля, результат чтения цепо

Добавил в ветку d023.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/