Как скопировать процедуру в тот же модуль?

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1411
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Как скопировать процедуру в тот же модуль?

Сообщение RaFaeL »

kreator писал(а): Подозреваю, что тянутся с ДОСа, когда надо было следить за размером модулей, чтобы 600кб не превысить.
Даже в С6 если объявление переменных больше 640 кб то модуль тоже не компилится, "too many segdef"
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Как скопировать процедуру в тот же модуль?

Сообщение Губин Игорь »

Admin писал(а): За весь срок программирования не использовал в Кларион модульные переменные. И как то обходился
Использую, но в одном, довольно специфическом случае.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Как скопировать процедуру в тот же модуль?

Сообщение Admin »

Губин Игорь писал(а): в одном, довольно специфическом случае
Требую подробностей! :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Как скопировать процедуру в тот же модуль?

Сообщение Губин Игорь »

Admin писал(а): Требую подробностей!
Программа работы со спектрометрами. Моё универсальное АПИ реализовано в виде отдельного модуля для каждого спектрометра (как dll). Вот там в одном большом файле CLW все Procedure и, соответсвенно, удобно использовать специфические глобальные для них переменные, ну и экспортируемые тоже

Ничего супер-пупер гениального. Задача диктовала именно такое решение
Это я только кажусь дураком! На самом деле я полный идиот!
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Как скопировать процедуру в тот же модуль?

Сообщение Yufil »

Модульные переменные позволяют работать как статические поля класса, они видны процедурам внутри и не видны всем другим.
Если процедуры внутри модуля работают со структурами данных, которые больше никому не нужны, зачем тащить их на глобальный уровень или заморачиваться с инклудниками?
Кстати, достаточно несложно, используя переменные и embed'ы модуля, реализовать настоящий класс внутри app без всяких шаблонов, а не тащить внешние файлы - тоже полезно, у меня много таких в приложениях.
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Как скопировать процедуру в тот же модуль?

Сообщение Губин Игорь »

Yufil писал(а): Кстати, достаточно несложно, используя переменные и embed'ы модуля, реализовать настоящий класс внутри app без всяких шаблонов
+100500
Это я только кажусь дураком! На самом деле я полный идиот!
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Как скопировать процедуру в тот же модуль?

Сообщение Shur »

RaFaeL писал(а):
kreator писал(а): Подозреваю, что тянутся с ДОСа, когда надо было следить за размером модулей, чтобы 600кб не превысить.
Даже в С6 если объявление переменных больше 640 кб то модуль тоже не компилится, "too many segdef"
Извините, что запоздало. IMHO "ноги тянутся" от природы самого языка, т.е. того, что единицей компиляции является модуль, и условной компиляции (правда не помню, была ли условная компиляция изначально в языке или это было привнесено TopSpeed JPI).
Не знаю как сейчас, но даже в конце нулевых на полную перекомпиляцию проекта могло уходить по полчаса. Так что "протягивать" переменные для передачи из вызывающей процедуры в вызываемую через Глобалы было накладно, а через модульные переменные -- пожалуйста.
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Как скопировать процедуру в тот же модуль?

Сообщение kreator »

Shur писал(а):Не знаю как сейчас, но даже в конце нулевых на полную перекомпиляцию проекта могло уходить по полчаса. Так что "протягивать" переменные для передачи из вызывающей процедуры в вызываемую через Глобалы было накладно, а через модульные переменные -- пожалуйста.
Сейчас всё изменилось. По Вашему посту, конкретно. У меня App с ~200 процедурами (как правило, обычные экранные формы), полная компиляция в C10 - 30 секунд. Переменные в процедуру стараюсь передавать через заголовок, дабы избежать всяческих проблем, типа озвученной мной в данном посте. В глобалах у меня много переменных описанных "как Тип".
И вообще сейчас в Кларионе есть (может и было) много возможностей для удобной и быстрой разработки. Из последней интересной находки. Стандартный репорт создаётся из очереди, переданной через заголовок, причём сама структура репорта понимает "нотификацию" структуры очереди. Плюс в этом всём - если есть сложный броуз и надо на его основе создать репорт, то можно не тратить время на новый "запрос" в БД. Да и "однотипность" такого решения позволяет сильно ускорить разработку отчётов ("однотипных").
We are hard at work… for you. :)
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Как скопировать процедуру в тот же модуль?

Сообщение Shur »

kreator писал(а): Сейчас всё изменилось. ... У меня App с ~200 процедурами (как правило, обычные экранные формы), полная компиляция в C10 - 30 секунд.
Я про то же. Сейчас, возможно, никто бы и не вспомнил про условную компиляцию: 30 секунд -- тьфу! Но тогда это был существенный выигрыш.
Хотя современные компиляторы (или среды, если хотите, в частности от Microsoft) в чём-то тоже ушли вперёд. Например, когда сообщается ещё до компиляции, что та или иная переменая используется всего один раз. Красота! Или, точнее -- мелочь, а приятно!
Ответить