gpt4 book ai didi

delphi - "JPEG Error #42"无法通过 try catch ...除非加载损坏的图像

转载 作者:行者123 更新时间:2023-12-02 08:27:13 31 4
gpt4 key购买 nike

我正在尝试使用 TImage.Picture.LoadFromFile() 加载损坏的图像(图像文件大小为 0kb),但 try.. except 未捕获JPEG 错误#42:

try  
Image1.Picture.LoadFromFile('myfile.jpg'); // myfile.jpg is broken image
except
on e: exception do
ShowMessage('Fail to load');
end;

消息显示“JPEG 错误 #42”,而不是“加载失败”。

broken image sample

最佳答案

发生的情况是,当图像控件绘制自身时,错误被异步触发。直到那时才处理实际的图像数据,并且图像直到下一个绘制周期才绘制自身。这会在事件处理程序返回后发生。

如果您希望能够同步处理错误,那么您需要强制立即处理无效的图像数据。这是实现这一目标的一种相当丑陋的方法:

try  
Image1.Picture.LoadFromFile('myfile.jpg'); // myfile.jpg is broken image
(Image1.Picture.Graphic as TJPEGImage).DIBNeeded;
except
on e:exception do
ShowMessage('Fail to load');
end;

请注意,现代版本的 Delphi 已经解决了这个问题,您问题中的代码将按照您的希望和期望运行。

关于delphi - "JPEG Error #42"无法通过 try catch ...除非加载损坏的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34784602/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com