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等等。很奇怪。不知为何。
因为这个原因。才考虑了这么多。