Как создать группу на основе *group?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Как создать группу на основе *group?
Я сталкивался с ограничением на количество процедур в отдельном сгенеренном файле. Выдается сообщение типа превышение segdef чего-то там, не помню точно. Решается разделением на несколько файлов. В шаблонах устанавливается счетчик и нарезается необходимое количество файлов с сырцами. Это когда генерится так называемый базовый слой бизнес-функций, через который приложение может работать с базой данных на более высоком уровне по сравнению с примитивными операциями set/next/get и т.п.
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1377
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Как создать группу на основе *group?
Ну вот сколько размер основная_апп.clw? Максимально компилируемый размер у нас был 668442 байта, дальше выдает too many segdef и не компилит пока что-то не удалишь. Уже в С7 такой проблемы не было, это видимо как-то связано с 16-битностью
А как генерируемое описание таблиц то на модули делить?Я сталкивался с ограничением на количество процедур в отдельном сгенеренном файле. Выдается сообщение типа превышение segdef чего-то там, не помню точно. Решается разделением на несколько файлов. В шаблонах устанавливается счетчик и нарезается необходимое количество файлов с сырцами.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Как создать группу на основе *group?
Глянул, файлик с глобальными декларациями весит 770 кб, но это с учетом того, что в нем еще комментарии...
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Как создать группу на основе *group?
too many segdef возникало на файл с процедурами. Обходится без особых проблем. Файл с декларациями не пробовал. Можно поэкспериментировать, он через include подключается, можно попробовать разделить на 2 и компильнуть. Это в классических шаблонах, про ABC не в курсе.
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1377
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Как создать группу на основе *group?
ОК, основная_апп.obj сколько? У нас сейчас 1161095, но при этом clw сейчас примерно 600 кб, не 650
Да, у нас ABC. Нашел какую-то галочку про разделение по модулям, но что-то не взлетело с ней, не собирается, может это можно починить, позже поэкспериментирую
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Как создать группу на основе *group?
А что в этой основная_апп.clw? У меня в аналоге только map-структура и инклуды. Размер 128кб.
Компилятор в С6.3 32 битный. 16 бит только среда. Возможно, кодогенератор.
Компилятор в С6.3 32 битный. 16 бит только среда. Возможно, кодогенератор.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Как создать группу на основе *group?
В data.obj 763 кб. Это только декларации. Все процедуры в отдельных obj. Может, какие-то особенности компоновки ABC?
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Как создать группу на основе *group?
Сама заглавная dll 5614 кб. Вообще, на зарубежном форуме народ писал и про гораздо большее количество таблиц в декларациях. Если не ошибаюсь, порядка 1000. Под какую версию клариона не помню, но было довольно давно.
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1377
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Как создать группу на основе *group?
85% это описание всех таблиц, еще примерно 10% это декларация ABC-классов для работы с файлами, ну и 5% все остальное по мелочи. Т.е. затык именно в размере суммарного описания таблиц в одном модуле
- Игорь Столяров
- Ветеран движения
- Сообщения: 7375
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Как создать группу на основе *group?
Тут, кстати есть ещё один вариант. Сразу не сообразил …
Передавать в Source параметр как: (const *Group) и всё.
В этом случае, все вносимые в Source изменения будут не видны в вызывающей процедуре.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Как создать группу на основе *group?
А сами ABC классы случаем не в тот же obj попадают? Что-то он большой у вас.
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1377
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Как создать группу на основе *group?
И еще про размер: у нас база MS SQL, поэтому для каждой таблицы, ключа, поля заполнено поле NAME, плюс, поскольку имя ключа в MS SQL должно быть уникальным в пределах базы, эти имена весьма длинные. Т.е. в целом описание таблицы получается чуть ли не в два раза больше, чем было бы без полей NAME. Так и набегает
Основная dll 4500 кб
Нет они отдельноА сами ABC классы случаем не в тот же obj попадают? Что-то он большой у вас.
Основная dll 4500 кб
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Как создать группу на основе *group?
А не может быть, что ошибка возникает не из-за размера деклараций, а из-за большого количества методов в ABC-классах? Если они все в одном obj и на каждую таблицу генерятся по несколько методов, возникает ситуация, похожая на мою с подобной ошибкой.
C6/C11, ШВС, tps/btrieve.