如何初始化我的自定义 IdIOHandler 字段?

How can I initialize my custom IdIOHandler fields?

这让我大吃一惊...我只想创建一个新的 IdIOHandler,并且像往常一样,我需要在构造函数中进行一些初始化...通常,我重写的构造函数基础 class,但我继承的这个 TIdIOHandlerStack 远非“正常”!它没有要覆盖的构造函数,并且(对我而言)不知道它是如何创建的。

  TIdEnhancedIOHandler = class(TIdIOHandlerStack)
  private
    FSendBuffer: TIdBytes;
    FSendBuff: TDataStream;
  public
    constructor Create;  // <-- I tested all the variations here, but non of them work
    destructor  Destroy; override;
  end;

  implementation

  constructor TIdEnhancedIOHandler.Create;
  begin
   inherited Create;
   FSendBuff:= TDataStream.Create(@SendBuffer);
  end;

  destructor TIdEnhancedIOHandler.Destroy;
  begin
   FSendBuff.Free;
   inherited;
  end;

  initialization

    TIdEnhancedIOHandler.SetDefaultClass;

我应该把我的初始化代码放在哪里,以便在所有使用 IOHandlers 的 Indy 组件中默认创建 TIdEnhancedIOHandler 的新实例时执行它?

我找到了...这是我必须覆盖的 InitComponent 方法。

  TIdEnhancedIOHandler = class(TIdIOHandlerStack)
  private
    FSendBuffer: TIdBytes;
    FSendBuff: TDataStream;
  public
    procedure   InitComponent; override;
    destructor  Destroy; override;
  end;

  implementation

procedure TIdEnhancedIOHandler.InitComponent;
begin
 inherited;
 FSendBuff:= TDataStream.Create(@SendBuffer);
end;