delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
Image组件加载图片出现错误后如何让程序继续正常的运行? VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061223162659164.html
请问,   Image组件加载图片出现错误后如何让程序继续正常的运行?  
  谢谢!

try  
      try  
      {Load   Image}  
      except    
      //不做任何处理  
      end;  
      {继续你的工作}  
      ...  
  finally  
      ...  
  end;

我不想在出错后显示提示窗口,也想让程序继续运行。  
  可是这种情况下却不行了:  
  一个BMP图片,改后缀为JPG  
  用Image装载的时候出现了错误提示。  
  可是我不想出现任何错误提示,有什么办法吗?  
  不光加载图片出错时不显示错误提示,其他错误也不想显示。

使用ApplicationEvents,然后处理OnException事件

try  
  except

当进行如下操作的时候,加入try...except也会报错。  
   
  1、   在C盘建立一个BMP图片文件,改名为   a.jpg  
  2、   建立一个空Project,加入一个按钮和图片框  
  3、   引用Jpeg单元。  
   
  这时候即使用   try...except   也会报错。这是为什么呢?应该怎么解决?  
  我找了一下午的原因才找到的,去掉   Jpeg   单元就不会报错。  
   
   
   
  unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   StdCtrls,   ExtCtrls,   jpeg;  
   
  type  
      TForm1   =   class(TForm)  
          Image1:   TImage;  
          Button1:   TButton;  
          procedure   Button1Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
      try  
          Image1.Picture.LoadFromFile('C:\a.jpg');  
      except  
      end;  
  end;  
   
  end.

在C盘建立一个BMP图片文件,改名为   a.jpg  
  ============================================================================  
  手工将bmp改为jpg,企图用TJPEGImage去装入是错误的。  
 

回   maozefa(阿发伯)  
  为什么其他错误try能捕捉到并不显示消息框。而经过刚才那样的操作却不能捕获或者说消息框不能被“隐藏”呢。  
  不能排除用户使用程序时恰巧遇到了我说的那种情况

编译为exe文件,独立运行,就不会显示错误消息了,在IDE环境,可以选择Tools->Debugger中去掉Stop   on   Dephi   Exceptions这个选项也不会显示了。

我就是编译为EXE的,提示是   JPEG   error   #42

我就是编译为EXE的,提示是   JPEG   error   #42  
  ===========================================================  
  说明这个错误不是通过Delphi的Exception机制发出的,或者说是运行时刻错误,这就无法捕捉到了。  
 

你可以用try   finally,应该不会报错的。而且,反正调用图片失败了,Image也没用了,就FREE掉。

:Louis_WH()    
  还是报错的  
   
   
  maozefa(阿发伯)  
  可是,如果不引用   Jpeg   就没有提示消息,引用就有了。  
   
  另外,虽然引用了   jpeg   ,怎么找不到这个单元文件呢?应该到那里去找这个东东(叫单元文件?找不到。叫类?又不知到他在哪)

如果不引用   Jpeg   就没有提示消息,引用就有了。  
  ============================================================================  
          jpeg.pas登录了文件格式类型jpg和jpeg,包含这个文件后,当Image.Picture装入图片时,按登录类型自动调用TJPEGImage,去掉这个文件,只能用缺省的TBitmap了。  
          jpeg.pas文件在D安装盘某个目录中(忘记目录名了,你可以搜索一下安装盘),没按装到系统中。

非常感谢   maozefa(阿发伯)    
  我有点明白了。  
  那个文件搜索了,安装盘那里,还是没有,我只是想看看里面的乾坤。。。。。。

procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      b2:     TBitmap;  
  begin  
      try  
          b2   :=   TBitmap.Create;  
          b2.LoadFromFile('C:\a.jpg');  
          Image1.Picture.Assign(b2);  
          b2.Free;  
      except  
      end;  
  end;  
   
   
  这样即使引用了   Jpeg   也不报错,和   maozefa(阿发伯)     说的一样。  
  请教一下这样的代码规范吗?谢谢

在安装光盘的Info\Extras\Jpeg目录,上面代码基本是规范的,但是手工改bmp为jpg后,总觉得怪怪的。  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      b2:     TBitmap;  
  begin  
      try  
          b2   :=   TBitmap.Create;  
          try  
              b2.LoadFromFile('C:\a.jpg');  
              Image1.Picture.Assign(b2);  
          finally  
              b2.Free;  
          end;  
      except  
      end;  
  end;  
 

谢谢maozefa(阿发伯)    
  但是手工改bmp为jpg后,总觉得怪怪的。  
  ----------  
  我从网上下载的一些图片就是被乱改了后缀的,比如GIF改成了jpg,jpg改成了bmp等等。很奇怪。不知为何。  
  因为这个原因。才考虑了这么多。

posted on 2008-11-18 14:29 delphi2007 阅读(202) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。