- Код: Выделить всё
 // Модуль MyDevice
 uses MyUart;
 type
 TMyDevice = class
 private
 Freg : array[0..1023] of word;
 procedure SetReg(Index: integer; Value:word);
 function GetReg(Index: integer) :word;
 public
 UART: TMyUart;
 property Reg[i:integer]:word read GetReg write SetReg;
 constructor Create;
 end;
 implementation
 constructor MyDevice.Create;
 begin
 UART := TMyUart.Create; // здесь надо как-то сделать, чтобы экземпляр UART мог читать и писать Reg
 end;
 ...
 (***************************************)
 // Модуль MyUart
 type
 TMyUart = class
 public
 procedure SendReg(adr,len: word);
 procedure ReceiveReg(adr,len: word);
 end;
 implementation
 procedure TMyUart.ReceiveReg(adr,len: word);
 begin
 // Здесь мне надо писать и читать Reg из TMyDevice
 end;
В главном модуле создаю MyDevice := TMyDevice.Create; который создает экземпляр UART класса TMyUart.
UART должен писать и читать регистры MyDevice.Reg Как это сделать? В модуле TMyUart не дает сделать uses TMyDevice (циклическая ссылка)
Если в SendReg можно явно передавать ссылку на Reg, поскольку вызов идет MyDevice.Uart.SengReg(...), то ReceiveReg вызывается в критической секции из другого потока, и ничего не знает про MyDevice.
Собственно вопрос, как сделать, чтобы при создании TMyUart.Create(...) он далее мог работать с public свойствами TMyDevice?



