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).
Warum sollte Embarcadero so etwas tun? – nolaspeaker
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
Verdient, als ein Qualitätsportal-Problem gemeldet zu werden. – nolaspeaker