首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OleGraphic.LoadFromStream()引发OLE错误800A01E1

OleGraphic.LoadFromStream()引发OLE错误800A01E1
EN

Stack Overflow用户
提问于 2014-07-25 14:46:17
回答 2查看 1.4K关注 0票数 0

我必须将jpeg文件加载到OleGrafic中。当我调用OleGraphic.LoadFromStream()时,它会引发OLE错误800A01E1。

我试图找出这个错误,但没有成功。与ole错误相关的最接近的答案是所有OLE错误代码列表,但我在那里找不到800A01E1。

我还试图以主形式初始化Ole。生成此错误的相同形式。百无所成。

代码语言:javascript
运行
复制
initialization
  OleInitialize(nil);
finalization
  oleuninitialize;

@ Remy :该代码在其他项目中正常工作:

代码语言:javascript
运行
复制
sFileName := OPD.FileName; 
      OleGraphic := TOleGraphic.Create; 
      fs := TFileStream.Create(sFileName, fmOpenRead Or fmSharedenyNone);
     // fs.Seek(0,soFromBeginning);// := 0;  Here I  tried to make sure it's o.
      OleGraphic.LoadFromStream(fs);
      Source := TImage.Create(Nil);
      Source.Picture.Assign(OleGraphic);
      SrcBild := TBitmap.Create; 
      SrcBild.Width := Source.Picture.Width;
      SrcBild.Height := Source.Picture.Height;
      SrcBild.Canvas.Draw(0, 0, Source.Picture.Graphic);
      DstBild := TBitmap.Create;
      DstBild.Width := 200;
      DstBild.Height := 100;
      SmoothResize(SrcBild, DstBild);

SmoothResize来自http://www.swissdelphicenter.com/torry/showcode.php?id=1896

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-25 15:18:28

我不能告诉您为什么该映像无法加载,但我可以告诉您错误代码的名称,以及如何在将来找到这样的代码。

Windows中的8位十六进制异常/结果错误代码通常可以通过在0x前缀找到它们,在这种情况下给出0x800A01E1

一个简单的搜索告诉我,错误代码的名称是CTL_E_INVALIDPICTURE,并且这个结果也列在底层的Win32函数OleLoadPictureFile上。

代码语言:javascript
运行
复制
Return value

This method returns standard COM error codes in addition to the following values.
Return code           Description
S_OK                  The method completed successfully.
CTL_E_INVALIDPICTURE  Invalid picture file.

当然,这也不能告诉您出了什么问题,但至少您现在知道可能的源是文件的实际内容。

由于函数的文档还列出了有效的文件格式,我的猜测是首先确保该文件是这些格式之一,而不仅仅是其他一些图像文件(或随机数据)伪装成JPEG或不正确的文件名,然后尝试将该文件加载到其他程序中。也许您甚至可以在某个可以重写图像文件内容的工具中加载和保存该文件,可能会修复它。

票数 2
EN

Stack Overflow用户

发布于 2014-07-25 16:50:29

TOleGraphic.LoadFromStream()在内部使用OleLoadPicture()。根据其文件:

流必须以BMP (位图)、WMF (图元文件)或ICO (图标)格式。

换句话说,不支持JPG。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24958419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档