2011-12-21 2 views
3

Я использую BeforSignup в блоке AfterSignup для того, чтобы быть в состоянии назвать переменную электронную почту из AfterSignup кода, в конце концов я enbcountred проблемы, потому что я хочу сделать кнопку, которая открывает окно AfterSignup с помощью кода:Как управлять циркулярными ссылками в единицах delphi?

AfterSignup.Show; 

Но проблема в том, что я обязан добавить блок AfterSignup в список использования BeforeSignup, и это точно то, что я не могу сделать, потому что я alreadey с использованием BeforeSignup для устройства AfterSignup.

Я получаю сообщение об ошибке, относящееся к циркулярному блоку.

+0

Возможный дубликат [Как избежать ссылки на круглую единицу?] (Http://stackoverflow.com/questions/1284959/how-to-avoid-circular-unit-reference) –

+1

Роб, этот вопрос был другим, потому что они, очевидно, нужна круговая ссылка, но я думаю, что ОП пытается ее избежать. –

+0

Чувак вам действительно нужно прочитать базовое руководство Pascal, подобное этому: http://www.marcocantu.com/epascal/ –

ответ

13

Простое решение было бы добавить unitA в предложении о interface секции unitB и unitBuses в предложении о implementation секции unitA

uses Лучшим решением было бы перерыва зависимости для (или хотя бы один).
Вы можете разорвать зависимость либо

  • перемещение всех вызовов от unitA к unitB в unitB
  • добавив третий, общий блок кода, используя как units A & B.
3

Если ваши объявления типа и объявление переменного в interface секции блока требуют классов или переменные в другой единице, то вы должны быть добавляя требуемую единицу к статье uses в разделе интерфейса.

Однако, если вам требуются только классы и переменные в блоке implementation вашего кода, то в коде реализации вы должны добавить требуемый блок только в пункт uses в разделе реализации.

Если у вас уже есть ссылка на раздел раздела интерфейса, вы не должны включать его снова в раздел реализации.

Если два блока используют друг друга только в секции реализации, то нет круглой ссылки. Вы также можете смешивать использование, если два блока не используют друг друга в разделе интерфейса (прямо или косвенно), вы не будете иметь круглую ссылку.

Итак, исходя из вашего вопроса, похоже, что вы должны использовать устройства только в своем разделе реализации, и круглых ссылок не будет.

Смежные вопросы