大哥啊!真不知道怎么说呢?
看你的代码:
-----------------------
on execption do
begin
setAbort
aa:=False;
Result:=True;
end;
-----------------------
你把Result 放在了 except中,如果不出错的话,返回的绝对是False,
在try外面先放一个Result的默认值吧。
看你的代码:
-----------------------
on execption do
begin
setAbort
aa:=False;
Result:=True;
end;
-----------------------
你把Result 放在了 except中,如果不出错的话,返回的绝对是False,
在try外面先放一个Result的默认值吧。
解决方案 »
- parameter BegDate not found
- 我靠,“芙蓉姐姐”是我初中YY过的同学,没想到现在红的发紫了
- 关于用DLL传递动态数据组的问题;
- ActiveX Library -> Active Server Object 如何读写注册表
- 有支持delphi7 的fastreport吗
- 外挂中是如何得到当前血和魔法药水的数值的。高手请指点一下编程思路。
- 一个SQL的问题,谢谢提供解决方法
- 请问 while DelList.Count>0 do 是什么意思?
- 请问怎样在MDI的命令中关闭子窗体?
- delphi错误征解?
- 求: 缩略图控件或者是一些能有类似效果的控件 (最好有原码)!
- 我快疯了这个软件怎么这么不好学
问题的根本原因不在这里.
我是在try外面是放了一个, Result:=True,
只是我在写贴子时写漏掉了.
var aa:olevariant;
begin
Dcom1.Appserver.MySave(aa) then
showmessage('ok') else showmessage('Error');
end;
应该是
var aa:olevariant;
begin
Dcom1.Appserver.MySave(aa) ;
if aa then
showmessage('ok') else showmessage('Error');
end;
我还到没试过out,我一般用in,和[in,out].
你的办法我也试过根本不行.
别外我的原始贴子少写了一个if
正确的应该是:
if Dcom1.Appserver.MySave(aa) then
showmessage('ok') else showmessage('Error');
我之所以将 aa:olevariant 定义为 out 型的就是指望在 Result不能返回时用变量aa来判断,结果一样不行.
请大家自已动手试一下好不好.
没有,你自已试一下.
的确,在COM体系中,任何函数的返回值都是HResult的,但COM的返回值并不一定就是开发工具中的函数返回值.比如VB.注意函数中的safecall,这是Delphi对Automation Object的内置支持,它把你的返回值变成了一个[out,retval]类型的参数,把你执出的异常变成了HResult的返回值.而在调用时,它会把HResult的COM返回值变成异常,把[out,retval]类型的COM参数变为返回值提供给你.
这个问题很奇怪,大家注意调用代码:
if Dcom1.Appserver.MySave(aa) then
showmessage('ok')
else
showmessage('Error');
不用考虑服务的实现,无论Dcom1.Appserver.MySave(aa) 返回什么,只可能有四种情况:
True或转换为Boolean型变为True:显示ok
False或转换为Boolean型变为False:显示Error
无法转换为Boolean:出现数据类型转换异常,进入异常处理
COM返回值<0,即产生了异常:进入异常处理
怎么会没有任何反应呢?
实在想不出为什么不可以。