KostyantynKo писал(а):
88211164
BSoft204 писал(а):
88210618При подключении к серверу
К какому серверу? Можете привести пример кода который вызывает Нарушение к Доступа(Access Violation), или воспроизвести шаги которые вызывают эту ошибку? Спасибо

Самый простой пример. Открыт TCP сервер (не важно где, на локальном компьютере или на удаленном) Пустая форма с компонентом IdMappedPortTCP. Настроен DefaultPort, MappedPort, MappedHost, Active=true
TCP клиентом цепляюсь через это приложение На свой сервер - При подключении Acces Violation, где-то в исходном коде компонента. Причем в любых сочетаниях - Delphi, CBuilder, Win32, Win64, VCL, FMX. В Embarcadero 12.3 и предыдущих версиях все ОК
procedure TIdMappedPortContext.HandleOutboundClientData;
begin
SetLength(FNetData, 0);
FOutboundClient.IOHandler.InputBuffer.ExtractToBytes(FNetData);
Server.DoOutboundClientData(Self);
Connection.IOHandler.Write(FNetData);
end;
procedure TIdMappedPortContext.OutboundConnect;
var
LServer: TIdMappedPortTCP;
LClient: TIdTCPClient;
begin
FOutboundClient := TIdTCPClient.Create(nil);
LServer := TIdMappedPortTCP(Server);
try
LClient := TIdTCPClient(FOutboundClient);
Вот тут !!!!!!!!!!**********************************
LClient.Port := LServer.MappedPort;
LClient.Host := LServer.MappedHost;
Вот тут !!!!!!!!!!**********************************
LServer.DoLocalClientConnect(Self);
LClient.ConnectTimeout := FConnectTimeOut;
LClient.Connect;
LServer.DoOutboundClientConnect(Self);
//APR: buffer can contain data from prev (users) read op.
CheckForData(False);
except
on E: Exception do
begin
DoException(E);
Connection.Disconnect; //req IdTcpServer with "Stop this thread if we were disconnected"
raise;
end;
end;