Big .dct
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Доброе утро/день/вечер.
Прошу совета у многоуважаемого сообщества...
Cитуация:
Есть .dct словарь: ~500 таблиц с ~10000 полями (в сумме .
Есть bdic.app (Target - W32 bit, Debug OFF) c этим словарем. Установлены флажки: "Объявить все файлы словаря"
Проблема:
При компиляции возникает ошибка:
(bdic.map 1,1) Link Error: Too many segdef in file: A,4000
с messageBox-ом следующего содержания:
Error(6): cif$fileclose Неверный дескриптор.
<OK>
При удалении любого одного файла или ключа в нем - ошибка исчезает. При добавлении - появляется.
Вопрос:
1. Можно ли это победить ограничение в самом кларионе? Как ?
2. Если нельзя, то кто как решал подобные проблемы. Разбивка объявлений файлов на две аппы?
Окружение: C5.5h, ШВС
Alex Kukushkin <alex@altsoft.ru>
Написал: ClaList(2)
Прошу совета у многоуважаемого сообщества...
Cитуация:
Есть .dct словарь: ~500 таблиц с ~10000 полями (в сумме .
Есть bdic.app (Target - W32 bit, Debug OFF) c этим словарем. Установлены флажки: "Объявить все файлы словаря"
Проблема:
При компиляции возникает ошибка:
(bdic.map 1,1) Link Error: Too many segdef in file: A,4000
с messageBox-ом следующего содержания:
Error(6): cif$fileclose Неверный дескриптор.
<OK>
При удалении любого одного файла или ключа в нем - ошибка исчезает. При добавлении - появляется.
Вопрос:
1. Можно ли это победить ограничение в самом кларионе? Как ?
2. Если нельзя, то кто как решал подобные проблемы. Разбивка объявлений файлов на две аппы?
Окружение: C5.5h, ШВС
Alex Kukushkin <alex@altsoft.ru>
Написал: ClaList(2)
Я подобную проблему решал линковкой в DLL-моде
Роман Ломасов <velomot@sucden.ru>
Ты гигант!
Наверняка спасет разбиение на несколько приложений, при этом словарь вполне м.б. общий, не надо только "Объявить все файлы словаря".
WBR, Nick Tsigouro mailto:nick@arsis.ru
Написал: ClaList(2)
Роман Ломасов <velomot@sucden.ru>
Ты гигант!
Поскольку это ошибка линкера, то неочевидно, что поможет разбиение на dll-ки, но можно попробовать. В частности, попробовать сделать две DLL-ки с глобалами, раскидав файлы между ними.1. Можно ли это победить ограничение в самом кларионе? Как ?
А нужны ли все 500 таблиц в одном приложении. И если это EXE, то зачем "Объявить все файлы словаря" ? Эта птичка ставится когда собирается dll глобальных данных, которая не использует ни одного файла, а должна содержать все объявления.2. Если нельзя, то кто как решал подобные проблемы. Разбивка объявлений файлов на две аппы?
Наверняка спасет разбиение на несколько приложений, при этом словарь вполне м.б. общий, не надо только "Объявить все файлы словаря".
WBR, Nick Tsigouro mailto:nick@arsis.ru
Написал: ClaList(2)
Big .dct
Добрый день!
Столкнулся с такой же ошибкой Too many segdef. (Clarion 6.1)
Так же имеется единый словарь с большим количеством таблиц и базовая dll , в которой генерится описание всех файлов. Не совсем понял, как разбить на две app. Выставлять индивидуально флажок "Generate File declaration" - немыслимо. Или есть какой то более простой способ решения ? Может, кто то уже решал аналогичную проблему?
Столкнулся с такой же ошибкой Too many segdef. (Clarion 6.1)
Так же имеется единый словарь с большим количеством таблиц и базовая dll , в которой генерится описание всех файлов. Не совсем понял, как разбить на две app. Выставлять индивидуально флажок "Generate File declaration" - немыслимо. Или есть какой то более простой способ решения ? Может, кто то уже решал аналогичную проблему?
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Big .dct
Самый простой способ - вычистить неиспользуемые поля и таблицы. Особенно алиасы, часто их добавляют по несколько на таблицу, при этом часто можно и обойтись. Наткнулись на это ограничение лет 10 назад, и все еще "держимся" с помощью чистки )
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Big .dct
У меня когда-то было подобное, только не для самих деклараций таблиц, а при генерации слоя процедур вокруг них. Решалось разбиением на несколько файлов на уровне шаблонов. Скорее всего, с декларациями аналогично.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Big .dct
Хотя по декларациям не уверен, что проскочит. Можно провести эксперимент, разделить на 2 файла и приинклудить. Ошибка может выдаваться не на сами декларации, а на обслуживающие процедуры, типа ri:update и ri:delete (или аналоги в абц). Можно их попробовать разнести на разные файлы.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Big .dct
Можно перенести часть описаний таблиц из словаря в Embed-ы, если они не используются в классах ABC.
Там же рассмотреть возможность динамического создания рабочих таблиц через DFD.
Часто в SQL приложениях импортируют всё подряд и большая часть таблиц нужна только для SQL запрсов.
За теми кто отстал - не возвращаться. (С) Кодекс
Big .dct
У нас ABC и Clarion, вроде, сам разбивает описание таких процедур по файлам типа *BC?.clw по шаблону. Или надо их как то еще мельче разбить ?
Удаление нескольких таблиц из словаря решает эту проблему, но боюсь, что это очень временно.
И непонятно, это ограничение Clarion на количество таблиц в словаре или на объем текста в clw - файле ?
Все эти файлы примерно одного размера ~ 70 Kb, только основной файл PROGRAM ~900 Kb
Почти все таблицы словаря используются в схемах APP, да и сейчас очень сложно провести ревизию такого количества файлов. Плюс не хотелось кардинально ничего менять в программе. Слишком много в ней всего )Игорь Столяров писал(а): ↑02 Ноябрь 2022, 19:41 Можно перенести часть описаний таблиц из словаря в Embed-ы, если они не используются в классах ABC
Вот, на всякий случай, скрин ошибки
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Big .dct
Больше похоже на превышение размера текста в файле.
Я бы "перевёл" ошибку как "to many segments defined in file", т.е. "многие сегменты в файле".
Аналогичная проблема есть и для размера кода в Source, она обходится через Routine.
Может быть это ошибка на размер MAP файла ? Попробуйте отключить его создание в настройках проекта.
Дальше - проверить сборку в C63. Дальше - проверить сборку в C11 с RunTime С63 ...
За теми кто отстал - не возвращаться. (С) Кодекс
Big .dct
На всех версия Clarion вплоть до 11.1 дает ошибкуИгорь Столяров писал(а): ↑03 Ноябрь 2022, 10:24 Дальше - проверить сборку в C63. Дальше - проверить сборку в C11 с RunTime С63 ...
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Big .dct
А вот эту цифру не пробовали подкручивать ?
Как-то она подозрительно похожа на цифру в ошибке ...
Как-то она подозрительно похожа на цифру в ошибке ...
За теми кто отстал - не возвращаться. (С) Кодекс
Big .dct
Тоже обратил на нее внимание, но не она ( Выставил 50 (64 не дает) и точно такая же ошибка.
Отключение создания MAP тоже не помогает
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Big .dct
А реальный размер файла STODECL.MAP какой получается при ошибке ?
И какой при сборке "работающего" APP ? Есть связь ?
И какой при сборке "работающего" APP ? Есть связь ?
За теми кто отстал - не возвращаться. (С) Кодекс