OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 14 Июнь, 2025 20:57

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




Начать новую тему Ответить на тему  [ Сообщений: 404 ]  На страницу Пред.  1 ... 17, 18, 19, 20, 21
Автор Сообщение
СообщениеДобавлено: Пятница, 30 Май, 2025 02:44 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
Ограничение на длину идента есть: OPS.MaxIdLen = 48
Это не так уж и мало. Если Вам надо больше — поменяйте и пересоберите Ofront+.

GameHunter писал(а):
Если есть ограничение на размер идентификаторов, об этом надо бы во время компиляции предупреждать...
У меня Ваш модуль компилируется.
Увеличил длину имени процедуры, предупреждение во время компиляции есть. Всё нормально.

Пришлите самодостаточный архив, воспроизводящий проблему.


Вложения:
LongLong.png
LongLong.png [ 65.43 КБ | Просмотров: 179 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 30 Май, 2025 02:57 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
А, я понял почему у Вас такая проблема возникла. Это срабатывает в Heap.REGMOD:
Код:
ASSERT(LEN(name$) < ModNameLen, 114);
, где ModNameLen = 32
Что тоже не так уж мало. Чем Вас не устраивает макс. длина имени модуля 32 и этот ASSERT?

Я могу увеличить до 48, но сильно большого смысла в этом не усматриваю. Чем больше это число — тем больше памяти будет жрать программа, имеющая много модулей. Это не так уж значительно, но такие расходы накапливаются.

Получается, что при компиляции макс. длина имени модуля подпадает под макс. длину идента OPS.MaxIdLen = 48, а в рантайме при регистрации модуля в реестре модулей в качестве макс. длины используется Heap.ModNameLen = 32
Возможно, это немного несбалансированно, и надо сделать эти числа одинаковыми. Тогда будет предупреждать в момент компиляции. А Вам и правда нужна такая огромная длина идентов? Помнится, я увеличил OPS.MaxIdLen с 32 (в оригинальном Ofront'е) до 48 исключительно из-за таких длинных идентов в WinAPI, там надо. Но чем больше это число — тем больше памяти будет жрать транслятор.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Июнь, 2025 19:27 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 238
Откуда: Питер
Эту ошибку я заметил при вполне себе реальном, написанном человеком имени. Длинные идентификаторы - нормальное явление, т.к. они пытаются описать предметную область. Это именно ошибка, т.к. корректно написанная программа приводит к исключению, и по этому её надо исправлять. Ещё хотелось бы понять ограничения на длину идентификаторов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2025 00:51 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
Увеличил длину имени модуля до 48 символов (47 + 0X), тестируйте.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 404 ]  На страницу Пред.  1 ... 17, 18, 19, 20, 21

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


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

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


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

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