在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中打开时)。我如何摆脱这个错误?
答案 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包对我来说是一个谜;它似乎没有记录在任何地方。