异常处理的问题(100分)

  • 主题发起人 主题发起人 metalyt
  • 开始时间 开始时间
M

metalyt

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中有如下异常处理代码
try
{
Edit1->Text.ToInt();

}
catch (EConvertError &error)
{
Application->MessageBox (
"error",
"Entry",
MB_OK) ;
}
想在发生转换异常时,弹出一个自己定义对话框.
可在运行时弹出的对话框却是提示"Edit1 is not a valid integer value".
问题出在哪儿?
 
如果你是在IDE中运行的,IDE会先提示异常,然后才执行你的异常处理
如果你是运行的EXE,就会提示你自己的消息
 
Try
   Edit1.Text:=IntToStr(StrToInt(Edit2.Text));
Except
   ShowMessage('输入的不是数字(Edit2)');
end;
 
应该像w128那种格式写,因为except后面跟的是处理不成功的错误处理部分。
 
首先多谢三位,我忘了说我用的是bcb.
不过我在bcb6中新建一个项目,不管是在ide里,还是运行exe文件都不是显示自己的对话框.
可我运行一个关于异常的例子程序,却可以实现类似的功能.
而且我将自己的代码添加进那个例子程序里,可以显示我自己定义的对话框.
是不是要对设置什么选项?
 
我实在是想不通啊.
哪位高手能帮我解答?南通地区的,我请你们吃饭[:D]
 
这就蹊跷了,你的代码是没有问题的——我在我的机器上新建了一个项目试过了。
可能是你的BCB6的设置哪里被改乱了,但我也搞不清该改哪里才能改回来,实在不行的话,
只好……(你们也猜得到该干什么了吧?)
另外,介绍给你一系列函数:TryXXXToXXX,例如TryStrToInt(),它不会在转换出错的时候
抛出异常,而是返回true或false。
 
多谢Sachow.我也觉得是project中option里的配置问题.
我重装了bcb也不行.明天都别的机器去试试.[:(!]
暂时就这样吧,我都快被气晕了.
 
如果不是重装操作系统的话,需要删除原来的CB目录和注册表里的相关项才行。
 
我今天对比了两个程序的项目文件,主要就是一处不同.
无法实现的project文件
<LINKER>
<ALLOBJ value="c0w32.obj $(PACKAGES) $(OBJFILES)"/>
<ALLRES value="$(RESFILES)"/>
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cw32i.lib"/>
<OTHERFILES value=""/>
</LINKER>
可以实现的project文件
<LINKER>
<ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/>
<ALLRES value="$(RESFILES)"/>
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
<OTHERFILES value=""/>
</LINKER>
哪位高手能告诉我cp32mt.lib与cw32i.lib有何区别?那儿能找到他们的详细说明?
 
后退
顶部