Перекрытие методов в nested классах. Как?
Добавлено: 21.08.2023 21:26:09
Добрый день,
вопрос простой. Попробую на примере.
Евть в $FPCDIR/fcl-web/src/websocket/fpwebsocketclient.pp вот такой вот класс
Нужно в моем классе перекрыть TMessageDriverThread.Execute , ну скажем чтобы вебсок клиент посылал серверу пинг, и если сервер отвалится, то отбой.
Как нужно извратиться? Пробовал так, но ругается, что не видит TMessageDriverThread, хотя у анцестора TWSThreadMessagePump он в protected.
вопрос простой. Попробую на примере.
Евть в $FPCDIR/fcl-web/src/websocket/fpwebsocketclient.pp вот такой вот класс
- Код: Выделить всё
TWSThreadMessagePump = Class(TWSMessagePump)
Private
FThread : TThread;
Procedure ThreadTerminated(Sender : TObject);
Protected
Type
TMessageDriverThread = Class(TThread)
Public
FPump : TWSThreadMessagePump;
Constructor Create(aPump : TWSThreadMessagePump; aTerminate : TNotifyEvent);
Procedure Execute;override;
End;
Public
Procedure Execute; override;
Procedure Terminate; override;
End;
Нужно в моем классе перекрыть TMessageDriverThread.Execute , ну скажем чтобы вебсок клиент посылал серверу пинг, и если сервер отвалится, то отбой.
Как нужно извратиться? Пробовал так, но ругается, что не видит TMessageDriverThread, хотя у анцестора TWSThreadMessagePump он в protected.
- Код: Выделить всё
unit myunit
interface
uses fpwebsocketclient;
type
TMyWSMsgPump_descendant = class (TWSThreadMessagePump )
protected
type
TMyDrvThread_descendant = Class(TMessageDriverThread )
Public
Procedure Execute;override;
End;
end;
....
interface
Procedure TMyWSMsgPump_descendant.TMessageDriverThread.Execute;
begin
inherited;
......
end;
implementation
----
end;