Последняя версия DataExpress 3 beta от 20 сентября 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

Подключение модулей

Вопросы, касающиеся языка, синтаксиса.
Vofka18
Интересующийся
Сообщения: 120
Зарегистрирован: Вс мар 04, 2018 4:54 pm

Подключение модулей

Сообщение Vofka18 » Ср авг 22, 2018 9:44 pm

Спасибо! :roll:
В том модуле, по сути, только процедуры расчета цены и остатков, они все равно подстроены под мою базу(но появилась идея написать полностью универсальный модуль, но это позже, пока только в голове крутится, но думаю будет полезная штука)

А вот вопрос не по теме(чтоб не плодить форум, спрошу здесь ;) ) Это глюк или так и должно быть?:
Допустим есть модуль1, модуль2 и модуль3
В модуле1 подключены модуль2 и модуль3
А в модуле2 понадобилось частично использовать модуль3.
Так вот, при такой конструкции, компилятор ругается на дублирование функции, и приходится перераспределять подключения, в порядке использования, то-есть в модуле1 подключаем модуль2 а в модуле2 подключаем модуль3.
Это не сильно проблематично если не много ссылок, но думаю будет не удобно если какой то модуль уже написан и давно работает(о нем уже и забыл), а тут надо искать откуда вылезло дублирование функции. Надеюсь понятно пояснил. ;)

jurist23rus
Эксперт
Сообщения: 2377
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Вычисляемое поле в табличном представлении формы(ListWindow))

Сообщение jurist23rus » Ср авг 22, 2018 11:17 pm

Если компилятор ругается на дублирование функций значит они действительно дублируются - ищите дубликат и исправляйте.

Когда вы подключаете модуль, то для компилятора все подключённые модули становятся единым модулем и он пытается его скомпилировать. Если в этом "едином" модуле есть подпрограммы (процедуры и функции) с одинаковыми именами это не понравится компилятору и он сделает вам замечание, потому что для него это единый код. Имейте это ввиду.
Destiny is a very convenient word for those who never take decisions.

Vofka18
Интересующийся
Сообщения: 120
Зарегистрирован: Вс мар 04, 2018 4:54 pm

Re: Подключение модулей

Сообщение Vofka18 » Чт авг 23, 2018 12:21 pm

Прошу прощения, но вы, наверно, не правильно меня поняли. Я без претензии, это можно обойти, просто немного неудобно.
Во вложении, маленький пример. Грубо говоря, сейчас в нем эта ошибка симитирована.
Вложения
ТЕСТ.7z
(31.97 КБ) 3 скачивания

jurist23rus
Эксперт
Сообщения: 2377
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Подключение модулей

Сообщение jurist23rus » Чт авг 23, 2018 12:40 pm

Вы два раза ссылаетесь на один и тот же модуль - это ошибка в вашей логике.

Если вы к модулю Main подключаете mod_1, то не нужно дополнительно подключать ещё и mod_3, так как mod_1 уже содержит ссылку на mod_3. Таким образом mod_1 уже содержит внутри себя и mod_2 и mod_3, подключив mod_1 вы получаете все три модуля сразу.
Destiny is a very convenient word for those who never take decisions.

Vofka18
Интересующийся
Сообщения: 120
Зарегистрирован: Вс мар 04, 2018 4:54 pm

Re: Подключение модулей

Сообщение Vofka18 » Чт авг 23, 2018 12:58 pm

jurist23rus писал(а):Вы два раза ссылаетесь на один и тот же модуль - это ошибка в вашей логике.

Я не утверждаю что это ошибка, а спрашиваю.
Просто допустим у меня есть модуль с самыми разными функциями, не подлежащими группировке по отдельным модулям, назовем его например "Прочие функции". На него может ссылаться любой модуль. И просто происходит путаница, когда я допустим добавляю новый модуль, и по ходу программирования подключаю модуль "Прочие функции", и еще какой нибудь модуль (написанный ранее), и оказывается последний уже ссылается на "Прочие функции", и приходится шнырять по модулям, продумывать цепочку, чтобы сохранить доступность модулей, и не отцепить чего лишнего :) .
Я не в коем разе, не настаиваю, что это нужно исправлять, или что это баг. Просто заметил, для меня, странное поведение компилятора, и решил известить о нем автора.
Я сам учился программировать на C# и Delphi, отсюда и такие, может глупые, вопросы.(там можно все подключать как хочеш :) )
Не судите строго ;)

jurist23rus
Эксперт
Сообщения: 2377
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Подключение модулей

Сообщение jurist23rus » Чт авг 23, 2018 1:01 pm

Vofka18 писал(а):Я не утверждаю что это ошибка

Я утверждаю. Это ваша ошибка.
Destiny is a very convenient word for those who never take decisions.

Vofka18
Интересующийся
Сообщения: 120
Зарегистрирован: Вс мар 04, 2018 4:54 pm

Re: Подключение модулей

Сообщение Vofka18 » Чт авг 23, 2018 1:12 pm

jurist23rus писал(а):
Vofka18 писал(а):Я не утверждаю что это ошибка

Я утверждаю. Это ваша ошибка.

Как скажите...

Аватара пользователя
admin
Разработчик
Сообщения: 3774
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская

Re: Подключение модулей

Сообщение admin » Чт авг 23, 2018 1:22 pm

Модули подключаются по принципу include в Си. Когда скрипты только появились, было реализовано подключение модулей через uses. Но реализация получилась довольно сложная и были какие-то ограничения (уже и не помню, какие именно). Пришлось от этой идеи отказаться и использовать более простое средство - включение кода модулей друг в друга.

Vofka18
Интересующийся
Сообщения: 120
Зарегистрирован: Вс мар 04, 2018 4:54 pm

Re: Подключение модулей

Сообщение Vofka18 » Чт авг 23, 2018 1:24 pm

admin писал(а):Модули подключаются по принципу include в Си. Когда скрипты только появились, было реализовано подключение модулей через uses. Но реализация получилась довольно сложная и были какие-то ограничения (уже и не помню, какие именно). Пришлось от этой идеи отказаться и использовать более простое средство - включение кода модулей друг в друга.

Понял. Спасибо!

jurist23rus
Эксперт
Сообщения: 2377
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Подключение модулей

Сообщение jurist23rus » Чт авг 23, 2018 2:42 pm

Vofka18 писал(а):Я сам учился программировать на C# и Delphi, отсюда и такие, может глупые, вопросы.(там можно все подключать как хочеш )

Можно и как хочешь, но вы же так не делаете!? И, наверное, стараетесь чтобы у каждого вашего модуля была некая логическая завершённость, чтобы вам не приходилось подключать шестнадцать разных модулей двадцать два раза, а нужно было бы подключить только один модуль, который обеспечит необходимый функционал, для решения конкретной небольшой задачи.
Destiny is a very convenient word for those who never take decisions.