Можно модифицировать процедуру WriteXY таким образом, чтобы
она воспринимала дополнительный параметр, задающий прямоугольное
окно на экране:
procedure WriteXY(SomeWindow : WindRec;
X, Y : integer;
Message : string);
procedure ShowError(Somewindow : WindRec; ErrMsg : string);
Нужно учитывать, что две процедуры находятся в разных моду-
лях. Даже если вы описываете WindData в интерфейсной секции одно-
го модуля, то нет такого допустимого способа, с помощью которого
это описание могло бы быть доступно в другом модуле. Решение сос-
тоит в том, чтобы описать третий модуль, в котором содержится
только определение записи WindRec:
unit WindData;
interface
type
WindRec = record
X1, Y1, X2, Y2 : integer;
ForeColor,
BackColor : byte;
Active : boolean;
end;
implementation
end.
В добавление к тому, что модификация кода процедур WriteXY и
ShowError позволяет использовать новый параметр, в интерфейсной
секции модулей Display и Error теперь может использоваться
WindData. Это допустимо, так как модуль WindData не зависит от
своего оператора uses, а модули Display и Error ссылаются друг на
друга только в соответствующих секциях реализации.
Взаимозависимые модули могут быть полезны в отдельных ситуа-
циях, но использовать их надо аккуратно. Если вы будете применять
их так, где это не требуется, программу станет сложней обслужи-
вать, и она будет больше подвержена ошибкам.