gpt4 book ai didi

sockets - 使用Delphi进行Indy查询

转载 作者:行者123 更新时间:2023-12-03 11:58:41 25 4
gpt4 key购买 nike

我有两个TIdTCPClient组件(TCPClient1和TCPClient2),它们共享相同的OnStatus属性(请参见下文)。
组件由其Tag属性标识。如何在共享OnStatus事件中识别正在调用的TCPClient?

procedure TForm2.TCPClientStatus(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: string);
begin
end;

最佳答案

在所有事件处理程序中,在每个组件中,Sender参数始终是触发事件的对象实例。
要 Handlebars 放在该对象上,可以执行简单的转换或安全的转换。对于您使用的TIdTCPClient和要检查的Tag属性,它将变为:

TIdTCPClient(Sender).Tag
或者
(Sender as TIdTCPClient).Tag
第二种形式更安全,因为如果由于某种原因 Sender不是假定的类型,那么您将在运行时得到一个异常,可以使用 try/except构造进行管理/检测。
您甚至可以在不同种类的组件之间共享同一事件处理程序。我不太了解Indy,无法给出相关示例,因此我将 OnClick事件用于 TButtonTEdit。您可以使用 is运算符检查类型:
if Sender is TButton then
// Do something using TButton(Sender).SomeProperty
else if Sender is TEdit then
// Do something using TEdit(Sender).SomeProperty

关于sockets - 使用Delphi进行Indy查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64355569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com