![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование модулей в Uses
Gu © (2011-06-11 00:51:00)Может кто-нибудь объяснить, сильно ли отличается использование дополнительных модулей (речь идет о модулях проекта) в разделе USES после Interface и после Implementation. Какие отличия и где лучше вставлять? Например есть основная форма (unit1), дополнительная (unit2) и просто unit3 (без формы). unit2 вставляется автоматом в uses после Implementation, если на него сослаться в любой процедуре unit1; а вот куда правильно вставлять unit3, если из него нужны функции в unite1 и unit2 - в какой из uses, при этом в unit3 используются функции unit2 - там как быть (в unit3 - куда вставлять unit2)?
Юрий Зотов (2011-06-12 14:17:00) [1]На мой взгляд, зря Борланд разрешил uses в implementation. В TP этого не было, что заставляло лучше продумывать структуру программы.
Игорь Шевченко (2011-06-12 11:30:00) [2]icarus рулит
hhtp://www.peganza.com
Dimka Maslov (2011-06-12 09:34:00) [3]
> Идеальный вариант для констант и типов специфичных для данного
> проекта или для группы проектов. Но не дай боже обозвать
> сей модуль первым напрашивающемся на язык именем Consts
> :)
Обзывать самонаписанное именами стандартных вещей - преступление.
Германн (2011-06-12 01:58:00) [4]
> Dimka Maslov © (11.06.11 23:14) [5]
>
> модуль с глобальными определениями у всех в интерфаце, остальные
> спокойно подключаются друг к другу в имплементатион
Идеальный вариант для констант и типов специфичных для данного проекта или для группы проектов. Но не дай боже обозвать сей модуль первым напрашивающемся на язык именем Consts :)
Dimka Maslov (2011-06-11 23:14:00) [5]модуль с глобальными определениями у всех в интерфаце, остальные спокойно подключаются друг к другу в имплементатион
Anatoly Podgoretsky (2011-06-11 12:44:00) [6]Правило простое, все в Implementation, если нет противопоказаний
Германн (2011-06-11 02:22:00) [7]
> Gu (11.06.11 02:04) [2]
>
> Спасибо
>
Да собственно не за что.
Тут требование одно - не должно быть перекрестных ссылок на модули в секции Interface. Ибо компилятор Дельфи сможет скомпилировать модуль A, в секции Interface uses которого указан модуль B, только после того как модуль B будет скомпилирован. Но если в модуле B в секции Interface uses указан модуль A, то возникает бесконечная рекурсия, которая вызывает ошибку компиляции.
Секции uses в Impementation таким пороком не страдают.
Gu (2011-06-11 02:04:00) [8]Спасибо
Германн (2011-06-11 00:58:00) [9]По возможности в Implementation, дабы не было Circular References.
В Interface только тогда, когда именно в этой секции есть ссылки на переменные или типы объявленные в другом модуле.