Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 加载图像时出现Delphi流读取错误_Image_Delphi_Fault - Fatal编程技术网

Image 加载图像时出现Delphi流读取错误

Image 加载图像时出现Delphi流读取错误,image,delphi,fault,Image,Delphi,Fault,我的程序加载了很多图像,但我有一个问题,就是有一个图像使用打印屏幕按钮从游戏中复制它,但是它是bmp,就像所有其他的一样。每当我运行该程序时,它都会显示project1.exe引发异常类Ereaderror,并显示消息“stream read error”进程已停止 代码如下: procedure TForm1.FormCreate(Sender: TObject); var path, destination:string; begin path:=paramstr(0); destinati

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

代码如下:

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

这是正确的。你有什么建议吗

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

如果该文件不存在,则会出现另一个错误,表明不存在此类文件。因此,文件存在,但无法加载。因此,它不是Windows位图

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


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

您如何确保位图文件有效?例如,将其加载到另一个程序中并重新保存。另一个应用程序在读取文件时是否生成错误?重新保存的副本是否在delphi应用程序中打开且没有错误?我使用了photoshop cs6,但这是我唯一遇到问题的图片,photoshop编辑的所有其他图片都已成功加载感谢您的帮助,但我找到了答案,我搜索了它,发现photoshop有时会导致此问题,所以所有使用photoshop的人,把这张图片保存为jpeg,然后用其他程序打开,把它保存为bmp(推荐24位),那么,这是否回答了你的问题呢?顺便说一句,最好使用像PNG这样的无损耗格式作为中间格式。