Страница 2 из 2

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

Добавлено: 11 Январь 2016, 22:55
RaFaeL
kreator писал(а): Подозреваю, что тянутся с ДОСа, когда надо было следить за размером модулей, чтобы 600кб не превысить.
Даже в С6 если объявление переменных больше 640 кб то модуль тоже не компилится, "too many segdef"

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

Добавлено: 12 Январь 2016, 10:44
Губин Игорь
Admin писал(а): За весь срок программирования не использовал в Кларион модульные переменные. И как то обходился
Использую, но в одном, довольно специфическом случае.

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

Добавлено: 12 Январь 2016, 12:43
Admin
Губин Игорь писал(а): в одном, довольно специфическом случае
Требую подробностей! :)

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

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

Ничего супер-пупер гениального. Задача диктовала именно такое решение

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

Добавлено: 12 Январь 2016, 13:56
Yufil
Модульные переменные позволяют работать как статические поля класса, они видны процедурам внутри и не видны всем другим.
Если процедуры внутри модуля работают со структурами данных, которые больше никому не нужны, зачем тащить их на глобальный уровень или заморачиваться с инклудниками?
Кстати, достаточно несложно, используя переменные и embed'ы модуля, реализовать настоящий класс внутри app без всяких шаблонов, а не тащить внешние файлы - тоже полезно, у меня много таких в приложениях.

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

Добавлено: 12 Январь 2016, 14:30
Губин Игорь
Yufil писал(а): Кстати, достаточно несложно, используя переменные и embed'ы модуля, реализовать настоящий класс внутри app без всяких шаблонов
+100500

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

Добавлено: 13 Январь 2016, 13:35
Shur
RaFaeL писал(а):
kreator писал(а): Подозреваю, что тянутся с ДОСа, когда надо было следить за размером модулей, чтобы 600кб не превысить.
Даже в С6 если объявление переменных больше 640 кб то модуль тоже не компилится, "too many segdef"
Извините, что запоздало. IMHO "ноги тянутся" от природы самого языка, т.е. того, что единицей компиляции является модуль, и условной компиляции (правда не помню, была ли условная компиляция изначально в языке или это было привнесено TopSpeed JPI).
Не знаю как сейчас, но даже в конце нулевых на полную перекомпиляцию проекта могло уходить по полчаса. Так что "протягивать" переменные для передачи из вызывающей процедуры в вызываемую через Глобалы было накладно, а через модульные переменные -- пожалуйста.

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

Добавлено: 13 Январь 2016, 14:35
kreator
Shur писал(а):Не знаю как сейчас, но даже в конце нулевых на полную перекомпиляцию проекта могло уходить по полчаса. Так что "протягивать" переменные для передачи из вызывающей процедуры в вызываемую через Глобалы было накладно, а через модульные переменные -- пожалуйста.
Сейчас всё изменилось. По Вашему посту, конкретно. У меня App с ~200 процедурами (как правило, обычные экранные формы), полная компиляция в C10 - 30 секунд. Переменные в процедуру стараюсь передавать через заголовок, дабы избежать всяческих проблем, типа озвученной мной в данном посте. В глобалах у меня много переменных описанных "как Тип".
И вообще сейчас в Кларионе есть (может и было) много возможностей для удобной и быстрой разработки. Из последней интересной находки. Стандартный репорт создаётся из очереди, переданной через заголовок, причём сама структура репорта понимает "нотификацию" структуры очереди. Плюс в этом всём - если есть сложный броуз и надо на его основе создать репорт, то можно не тратить время на новый "запрос" в БД. Да и "однотипность" такого решения позволяет сильно ускорить разработку отчётов ("однотипных").

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

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