Как создать группу на основе *group?
Clarion, Clarion 7
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
finsoftrz
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Как создать группу на основе *group?
Я сталкивался с ограничением на количество процедур в отдельном сгенеренном файле. Выдается сообщение типа превышение segdef чего-то там, не помню точно. Решается разделением на несколько файлов. В шаблонах устанавливается счетчик и нарезается необходимое количество файлов с сырцами. Это когда генерится так называемый базовый слой бизнес-функций, через который приложение может работать с базой данных на более высоком уровне по сравнению с примитивными операциями set/next/get и т.п.
C6/C12, ШВС, tps/btrieve.
finsoftrz
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Как создать группу на основе *group?
Ну вот сколько размер основная_апп.clw? Максимально компилируемый размер у нас был 668442 байта, дальше выдает too many segdef и не компилит пока что-то не удалишь. Уже в С7 такой проблемы не было, это видимо как-то связано с 16-битностью
А как генерируемое описание таблиц то на модули делить?Я сталкивался с ограничением на количество процедур в отдельном сгенеренном файле. Выдается сообщение типа превышение segdef чего-то там, не помню точно. Решается разделением на несколько файлов. В шаблонах устанавливается счетчик и нарезается необходимое количество файлов с сырцами.
RaFaeL
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Как создать группу на основе *group?
Глянул, файлик с глобальными декларациями весит 770 кб, но это с учетом того, что в нем еще комментарии...
C6/C12, ШВС, tps/btrieve.
finsoftrz
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Как создать группу на основе *group?
too many segdef возникало на файл с процедурами. Обходится без особых проблем. Файл с декларациями не пробовал. Можно поэкспериментировать, он через include подключается, можно попробовать разделить на 2 и компильнуть. Это в классических шаблонах, про ABC не в курсе.
C6/C12, ШВС, tps/btrieve.
finsoftrz
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Как создать группу на основе *group?
ОК, основная_апп.obj сколько? У нас сейчас 1161095, но при этом clw сейчас примерно 600 кб, не 650finsoftrz писал(а): 28 Декабрь 2018, 21:06Глянул, файлик с глобальными декларациями весит 770 кб, но это с учетом того, что в нем еще комментарии...
Да, у нас ABC. Нашел какую-то галочку про разделение по модулям, но что-то не взлетело с ней, не собирается, может это можно починить, позже поэкспериментирую
RaFaeL
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Как создать группу на основе *group?
А что в этой основная_апп.clw? У меня в аналоге только map-структура и инклуды. Размер 128кб.
Компилятор в С6.3 32 битный. 16 бит только среда. Возможно, кодогенератор.
Компилятор в С6.3 32 битный. 16 бит только среда. Возможно, кодогенератор.
C6/C12, ШВС, tps/btrieve.
finsoftrz
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Как создать группу на основе *group?
В data.obj 763 кб. Это только декларации. Все процедуры в отдельных obj. Может, какие-то особенности компоновки ABC?
C6/C12, ШВС, tps/btrieve.
finsoftrz
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Как создать группу на основе *group?
Сама заглавная dll 5614 кб. Вообще, на зарубежном форуме народ писал и про гораздо большее количество таблиц в декларациях. Если не ошибаюсь, порядка 1000. Под какую версию клариона не помню, но было довольно давно.
C6/C12, ШВС, tps/btrieve.
finsoftrz
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Как создать группу на основе *group?
85% это описание всех таблиц, еще примерно 10% это декларация ABC-классов для работы с файлами, ну и 5% все остальное по мелочи. Т.е. затык именно в размере суммарного описания таблиц в одном модуле
RaFaeL
- Игорь Столяров
- Ветеран движения
- Сообщения: 8077
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Как создать группу на основе *group?
Тут, кстати есть ещё один вариант. Сразу не сообразил …RaFaeL писал(а): 28 Декабрь 2018, 20:20В принципе, так и сделал, завел просто строку максимально возможной длины записи
Передавать в Source параметр как: (const *Group) и всё.
В этом случае, все вносимые в Source изменения будут не видны в вызывающей процедуре.
Make Clarion Great Again ! 
Игорь Столяров
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Как создать группу на основе *group?
А сами ABC классы случаем не в тот же obj попадают? Что-то он большой у вас.RaFaeL писал(а): 28 Декабрь 2018, 21:3185% это описание всех таблиц, еще примерно 10% это декларация ABC-классов для работы с файлами, ну и 5% все остальное по мелочи. Т.е. затык именно в размере суммарного описания таблиц в одном модуле
C6/C12, ШВС, tps/btrieve.
finsoftrz
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
finsoftrz
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Как создать группу на основе *group?
И еще про размер: у нас база MS SQL, поэтому для каждой таблицы, ключа, поля заполнено поле NAME, плюс, поскольку имя ключа в MS SQL должно быть уникальным в пределах базы, эти имена весьма длинные. Т.е. в целом описание таблицы получается чуть ли не в два раза больше, чем было бы без полей NAME. Так и набегает
Основная dll 4500 кб
Нет они отдельноА сами ABC классы случаем не в тот же obj попадают? Что-то он большой у вас.
Основная dll 4500 кб
RaFaeL
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Как создать группу на основе *group?
А не может быть, что ошибка возникает не из-за размера деклараций, а из-за большого количества методов в ABC-классах? Если они все в одном obj и на каждую таблицу генерятся по несколько методов, возникает ситуация, похожая на мою с подобной ошибкой.
C6/C12, ШВС, tps/btrieve.
finsoftrz
Вернуться в «CLARION for Windows»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)