- Код: Выделить всё
// Модуль 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?