【发布时间】:2016-05-19 12:53:22
【问题描述】:
我尝试将我的项目从 XE8 转移到 XE10.1
DataSnap 客户端模块有 SQLConnection1: TSQLConnection
当我将属性Driver.ConnectTimeout 设置为任何值,然后设置Connected=true,我得到错误:
“设置连接超时”
Driver.ConnectTimeout 中没有任何值,设置连接即可。
我的错误是什么?
【问题讨论】:
我尝试将我的项目从 XE8 转移到 XE10.1
DataSnap 客户端模块有 SQLConnection1: TSQLConnection
当我将属性Driver.ConnectTimeout 设置为任何值,然后设置Connected=true,我得到错误:
“设置连接超时”
Driver.ConnectTimeout 中没有任何值,设置连接即可。
我的错误是什么?
【问题讨论】:
你没有做错任何事。 Embarcadero 做到了。
在 Delphi 10 Seattle(我没有 XE8)中,Data.DbxHTTPLayer.TDSHTTPNativeClient.SetConnectTimeout 方法的实现是:
procedure TDSHTTPNativeClient.SetConnectTimeout(AMilisec: Integer);
begin
FHTTP.ConnectTimeout := AMilisec;
end;
在 Delphi 10.1 Berlin 中,同样的方法如下所示:
procedure TDSHTTPNativeClient.SetConnectTimeout(AMilisec: Integer);
begin
raise ENotImplemented.Create('SetConnectTimeout');
end;
我将源 (Data.DbxHTTPLayer.pas) 编辑为:
procedure TDSHTTPNativeClient.SetConnectTimeout(AMilisec: Integer);
begin
FHTTPClient.ConnectionTimeout := AMilisec;
//raise ENotImplemented.Create('SetConnectTimeout');
end;
它解决了这个问题。最初的 .dcu 和 .o 最初阻止了更改实际链接到我的应用程序中,因此我将 Data.DbxHTTPLayer.pas 添加到我的项目中(这可能不是正确的方法)。
【讨论】: