在某些站点上使用Delphi10.1 Berlin和Indy与TIdCompressorZLib时,它会崩溃,出现zlib错误-3

在某些站点上使用Delphi10.1 Berlin和Indy与TIdCompressorZLib时,它会崩溃,出现zlib错误-3,delphi,zlib,indy,Delphi,Zlib,Indy,在使用Indy(使用firemonkey框架)和TIdCompressorZLib阅读某些站点时,我会遇到一些问题 例如,该网站将因zlib错误-3而崩溃,我无论如何都无法捕捉到。在MAC上,它只会关闭程序并显示运行时错误231 id:=TIdHTTP.Create(nil); id.Compressor:=TIdCompressorZLib.Create(nil); st:=tmemorystream.create; try id.get('http://www.sfgate.com/weat

在使用Indy(使用firemonkey框架)和TIdCompressorZLib阅读某些站点时,我会遇到一些问题

例如,该网站将因zlib错误-3而崩溃,我无论如何都无法捕捉到。在MAC上,它只会关闭程序并显示运行时错误231

id:=TIdHTTP.Create(nil);
id.Compressor:=TIdCompressorZLib.Create(nil);
st:=tmemorystream.create;
try
id.get('http://www.sfgate.com/weather/',st); <- crash with zlib error -3
except
...
end;
id:=TIdHTTP.Create(nil);
id.Compressor:=TIdCompressorZLib.Create(无);
st:=tmemorystream.create;
尝试

id.get('http://www.sfgate.com/weather/",st),;柏林的Delphi OSX编译器似乎在处理引发的异常时遇到问题,这可能是导致应用程序崩溃的原因(这是我几天来第二次看到有人报告由
TIdHTTP
引发的异常导致OSX上的应用程序崩溃)。总的来说,印地的ZLib操作是有缺陷的。在这种情况下,我建议要么用自定义的
TIdZLibCompressorBase
派生类替换
TIdZLibCompressorBase
,以“正确的方式”解压缩,要么根本不使用
TIdHTTP.Compressor
,只需手动设置
Request.AcceptEncoding
,然后在
Get()之后解压缩
st
退出。这个问题已经有一个公开的问题,我已经添加了您的示例,所以我不会忘记:当macOS上触发太多异常时,我仍然存在运行时错误231的相同问题,即使使用最新的Delphi 10.3.2,对于崩溃和应用程序消失,我们也无能为力吗?向Embarcadero投诉他们的编译器在OSX上错误的异常处理。