如何解决如何初始化我的自定义 IdIOHandler 字段?
这让我大吃一惊...我只想创建一个新的IdIOHandler
,而且,像往常一样,我需要在构造函数中进行一些初始化...通常,我会覆盖基类的构造函数类,但是我继承的这个 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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。