0

我的程序加载了很多图像,但我有一个问题,使用打印屏幕按钮从游戏中复制它的 1 个图像,但它是 bmp,就像其他所有图像一样。每当我运行程序时,它都会说 project1.exe 引发异常类 Ereaderror 并显示消息“流读取错误”进程停止......

代码是这样的:

procedure TForm1.FormCreate(Sender: TObject);
var path, destination:string;
begin
path:=paramstr(0);
destination:=extractfilepath(path)+'Leagueoflegendsdesktop.bmp';
image1.Picture.LoadFromFile(destination);
end;

哪个是对的。你有什么建议?

4

1 回答 1

1

唯一的解释是该文件不是有效的 Windows 位图(可能文件被截断)。或者该文件可能使用了 Delphi 不支持的一些深奥的格式。例如,它是否使用游程编码。

如果该文件不存在,您会得到一个不同的错误,表明不存在这样的文件。因此,该文件存在但无法加载。因此,它不是 Windows 位图。

诊断此问题的第 1 步是查看文件的格式。加载位图文件头并检查这些值是否有意义。可能最简单的方法是在调试器下运行程序时单步执行 VCL 代码。启用 Debug DCUs 选项以便您执行此操作。TBitmap.ReadStream在单元中设置断点Graphics并从那里获取。

说了这么多,您可能更容易避免尝试调试问题。如果您可以将图像加载到图像编辑器中,只需以 Delphi 可以读取的格式保存图像的新副本。例如普通的普通 Windows 位图,或者更好的是允许压缩的 PNG 文件。

于 2013-04-08T20:33:58.733 回答