2016-05-19 5 views
2

versuchte ich Transfer von meinem Projekt von XE8 zu XE10.1Delphi XE10.1 DataSnap-Client-Fehler "SetConnectTimeOut"

DataSnap-Client-Modul haben SQLConnection1: TSQLConnection

Als ich Eigenschaft Driver.ConnectTimeout auf einen beliebigen Wert, dann set Connected=true, erhalte ich Fehler:

"SetConnectTimeout"

Ohne einen beliebigen Wert in Driver.ConnectTimeout Set-Anschluss ist OK.

Was mein Fehler?

Antwort

1

Sie machen nichts falsch. Embarcadero hat es getan.

In Delphi 10 Seattle (ich habe XE8 nicht), die Umsetzung der Data.DbxHTTPLayer.TDSHTTPNativeClient.SetConnectTimeout Methode ist:

procedure TDSHTTPNativeClient.SetConnectTimeout(AMilisec: Integer); 
begin 
    FHTTP.ConnectTimeout := AMilisec; 
end; 

In Delphi 10.1 Berlin, die gleiche Methode wie folgt aussieht:

procedure TDSHTTPNativeClient.SetConnectTimeout(AMilisec: Integer); 
begin 

    raise ENotImplemented.Create('SetConnectTimeout'); 
end; 

I bearbeitet die Quelle (Data.DbxHTTPLayer.pas) zu:

procedure TDSHTTPNativeClient.SetConnectTimeout(AMilisec: Integer); 
begin 
    FHTTPClient.ConnectionTimeout := AMilisec; 
    //raise ENotImplemented.Create('SetConnectTimeout'); 
end; 

Und es hat das Problem gelöst. Die ursprünglichen .dcu und .o verhinderten zunächst, dass die Änderung tatsächlich mit meiner App verknüpft wurde. Daher habe ich Data.DbxHTTPLayer.pas zu meinem Projekt hinzugefügt (dies war wahrscheinlich nicht der richtige Weg).

+0

Warum sollte Embarcadero so etwas tun? – nolaspeaker

+0

Zwischen 10 und 10.1 haben sie die zugrunde liegende HTTP-Bibliothek geändert. Meine Vermutung ist, dass sie darauf zurückkommen und es vergessen haben. – Pat

+0

Verdient, als ein Qualitätsportal-Problem gemeldet zu werden. – nolaspeaker