为什么在设计时找不到TServerSocket类?

时间:2015-09-07 09:03:59

标签: delphi delphi-xe2

Comm_Ethernet.dfm中,我声明了TServerSocket类型的组件:

object frmCommEthernet: TfrmCommEthernet
  object ServerSocket1: TServerSocket
    Active = False
    Port = 5555
    ServerType = stNonBlocking
    OnClientConnect = ServerSocket1ClientConnect
    OnClientDisconnect = ServerSocket1ClientDisconnect
    OnClientRead = ServerSocket1ClientRead
    OnClientError = ServerSocket1ClientError
    Left = 808
    Top = 8
  end
end

TServerSocket在RTL中的System.Win.ScktComp单元中声明,但它似乎在设计时可用,因为当我打开表单时它抱怨:

  

找不到TServerSocket类   [忽略] [取消] [忽略全部]

但是我的项目编译并运行得很好(当此表单未在IDE中打开时)。我如何摆脱这个错误?

2 个答案:

答案 0 :(得分:2)

ScktComp中的组件已弃用且已存在很长时间。您应该使用不同的组件,例如Indy。弃用的一个重要原因是这些组件不是跨平台的。

如果将ScktComp软件包安装到IDE中,您仍可以在设计时使用dclsocketsNNN.bpl组件。据推测,Embarcadero默认不安装此软件包,因为它包含不推荐使用的组件。

答案 1 :(得分:1)

无论出于何种原因,默认情况下,IDE中未安装包含此单元的BPL包。

你必须去:

  

组件 - >安装包 - >添加

然后在Embarcadero\RAD Studio\9.0\bin中选择var i = 0; var task = Task.Run(() => { i++; Console.WriteLine(i); return i; }); var x = await task; var y = await task; Console.WriteLine(x); Console.WriteLine(y); (根据您的Delphi版本进行更改)

如何找出包含单位的RTL BPL包对我来说是一个谜;它似乎没有记录在任何地方。