![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Это пример из книги "Библия Delphi" -> глава 17 Потоки.
Объясните пожалуйста, почему, в дополнительном потоке (Thread Object), главный модуль приложения (Main, с главной формой) нельзя объявить в разделе interface? Цитата:
|
#2
|
|||
|
|||
![]() Кто сказал, что нельзя?
Возможно, нет надобности его употребления в этой секции (он нужен только во второй). |
#3
|
||||
|
||||
![]() Если модуль Main объявить в разделе interface и запустить программу (в Delphi) появляется ошибка со следующим сообщением:
[DCC Fatal Error] MyThread.pas(6): F2047 Circular unit reference to 'Main' |
#4
|
|||
|
|||
![]() Да, это обычная ошибка.
1) Вам нужно, чтобы ссылка на Main была вверху? Для чего? 2) Возможно, что вы в Main (или в модуле, который вызывает MyThread) ссылку на MyThread тоже объявили вверху? Почему не в секции implementation? Для начала поставьте задачу, что вам нужно от ссылок на модули, а потом её решайте (ссылок нет, или они внизу; или в одном модуле вверху, а в другом внизу; или делаете третий модуль, а на него ссылаетесь из двух других) |
#5
|
||||
|
||||
![]() вообще-то если в окне "Messages" щелкнуть мышкой на сообщение об ошибке компилятора и нажать F1, то Delphi покажет страницу из файла справки по этой ошибке и предложит способ ее решения.
Пишу программы за еду. __________________ |
#6
|
||||
|
||||
![]() В общем, как я понял, запрещена ситуация при которой два модуля объявляют друг друга в разделе interface. Тогда у меня следующий вопрос: чем отличается "раздел uses в разделе implementation" от "раздела uses в разделе interface"?
|
#7
|
|||
|
|||
![]() Тем, что для модулей из раздела implementation не делается проверка на перекрёстные ссылки.
Хотя, может, вас интересует что-то другое. Попробую догадаться. Есть правила: 1) то, что в разделе interface (типы, константы, функции...), будет видно и другим модулям, а то, что в разделе implementation, этого другие модули не увидят. 2) если что-то используется (переменная, константа, функция...), то она предварительно должна быть описана. Напр., в вашем примере ссылка на Form3 предполагает, что эта переменная где-то описана (возможно, в Main: Код:
var Form3: TForm3; |
#8
|
||||
|
||||
![]() Спасибо! Объявляю тему закрытой!
|