Как создать группу на основе *group?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как создать группу на основе *group?

Сообщение finsoftrz » 28 Декабрь 2018, 20:53

Да, конечно.
Рязань решает.

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как создать группу на основе *group?

Сообщение finsoftrz » 28 Декабрь 2018, 21:00

Я сталкивался с ограничением на количество процедур в отдельном сгенеренном файле. Выдается сообщение типа превышение segdef чего-то там, не помню точно. Решается разделением на несколько файлов. В шаблонах устанавливается счетчик и нарезается необходимое количество файлов с сырцами. Это когда генерится так называемый базовый слой бизнес-функций, через который приложение может работать с базой данных на более высоком уровне по сравнению с примитивными операциями set/next/get и т.п.
Рязань решает.

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 874
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

Как создать группу на основе *group?

Сообщение RaFaeL » 28 Декабрь 2018, 21:04

Ну вот сколько размер основная_апп.clw? Максимально компилируемый размер у нас был 668442 байта, дальше выдает too many segdef и не компилит пока что-то не удалишь. Уже в С7 такой проблемы не было, это видимо как-то связано с 16-битностью
Я сталкивался с ограничением на количество процедур в отдельном сгенеренном файле. Выдается сообщение типа превышение segdef чего-то там, не помню точно. Решается разделением на несколько файлов. В шаблонах устанавливается счетчик и нарезается необходимое количество файлов с сырцами.
А как генерируемое описание таблиц то на модули делить?

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как создать группу на основе *group?

Сообщение finsoftrz » 28 Декабрь 2018, 21:06

Глянул, файлик с глобальными декларациями весит 770 кб, но это с учетом того, что в нем еще комментарии...
Рязань решает.

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как создать группу на основе *group?

Сообщение finsoftrz » 28 Декабрь 2018, 21:10

too many segdef возникало на файл с процедурами. Обходится без особых проблем. Файл с декларациями не пробовал. Можно поэкспериментировать, он через include подключается, можно попробовать разделить на 2 и компильнуть. Это в классических шаблонах, про ABC не в курсе.
Рязань решает.

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 874
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

Как создать группу на основе *group?

Сообщение RaFaeL » 28 Декабрь 2018, 21:15

finsoftrz писал(а):
28 Декабрь 2018, 21:06
Глянул, файлик с глобальными декларациями весит 770 кб, но это с учетом того, что в нем еще комментарии...
ОК, основная_апп.obj сколько? У нас сейчас 1161095, но при этом clw сейчас примерно 600 кб, не 650

Да, у нас ABC. Нашел какую-то галочку про разделение по модулям, но что-то не взлетело с ней, не собирается, может это можно починить, позже поэкспериментирую

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как создать группу на основе *group?

Сообщение finsoftrz » 28 Декабрь 2018, 21:22

А что в этой основная_апп.clw? У меня в аналоге только map-структура и инклуды. Размер 128кб.
Компилятор в С6.3 32 битный. 16 бит только среда. Возможно, кодогенератор.
Рязань решает.

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как создать группу на основе *group?

Сообщение finsoftrz » 28 Декабрь 2018, 21:24

В data.obj 763 кб. Это только декларации. Все процедуры в отдельных obj. Может, какие-то особенности компоновки ABC?
Рязань решает.

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как создать группу на основе *group?

Сообщение finsoftrz » 28 Декабрь 2018, 21:29

Сама заглавная dll 5614 кб. Вообще, на зарубежном форуме народ писал и про гораздо большее количество таблиц в декларациях. Если не ошибаюсь, порядка 1000. Под какую версию клариона не помню, но было довольно давно.
Рязань решает.

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 874
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

Как создать группу на основе *group?

Сообщение RaFaeL » 28 Декабрь 2018, 21:31

finsoftrz писал(а):
28 Декабрь 2018, 21:22
А что в этой основная_апп.clw?
85% это описание всех таблиц, еще примерно 10% это декларация ABC-классов для работы с файлами, ну и 5% все остальное по мелочи. Т.е. затык именно в размере суммарного описания таблиц в одном модуле

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4144
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Как создать группу на основе *group?

Сообщение Игорь Столяров » 28 Декабрь 2018, 21:32

RaFaeL писал(а):
28 Декабрь 2018, 20:20
В принципе, так и сделал, завел просто строку максимально возможной длины записи
Тут, кстати есть ещё один вариант. Сразу не сообразил …
Передавать в Source параметр как: (const *Group) и всё.
В этом случае, все вносимые в Source изменения будут не видны в вызывающей процедуре.
«V» значит Вендетта !

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как создать группу на основе *group?

Сообщение finsoftrz » 28 Декабрь 2018, 21:37

RaFaeL писал(а):
28 Декабрь 2018, 21:31
finsoftrz писал(а):
28 Декабрь 2018, 21:22
А что в этой основная_апп.clw?
85% это описание всех таблиц, еще примерно 10% это декларация ABC-классов для работы с файлами, ну и 5% все остальное по мелочи. Т.е. затык именно в размере суммарного описания таблиц в одном модуле
А сами ABC классы случаем не в тот же obj попадают? Что-то он большой у вас.
Рязань решает.

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как создать группу на основе *group?

Сообщение finsoftrz » 28 Декабрь 2018, 21:38

Еще, сколько весит итоговая dll?
Рязань решает.

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 874
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

Как создать группу на основе *group?

Сообщение RaFaeL » 28 Декабрь 2018, 21:39

И еще про размер: у нас база MS SQL, поэтому для каждой таблицы, ключа, поля заполнено поле NAME, плюс, поскольку имя ключа в MS SQL должно быть уникальным в пределах базы, эти имена весьма длинные. Т.е. в целом описание таблицы получается чуть ли не в два раза больше, чем было бы без полей NAME. Так и набегает
А сами ABC классы случаем не в тот же obj попадают? Что-то он большой у вас.
Нет они отдельно

Основная dll 4500 кб

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как создать группу на основе *group?

Сообщение finsoftrz » 28 Декабрь 2018, 21:54

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

Ответить