首页 > 学院 > 开发设计 > 正文

关于在COM中使用可选参数的研究

2019-11-18 18:41:17
字体:
来源:转载
供稿:网友
关于在COM中使用可选参数的研究
作者:wangzhidong(Steven Bob)
创作日期:2002-3-27
在Delphi6中设计COM组件方法时,在 Parameter flags dialog 中,选择Optional选项,即输入参数为可选,现就给出如何实现可选参数实例。 
监测函数
function VarIsEmptyParam(const V: Variant): Boolean;
begin
  Result := (TVarData(V).VType = varError) and
            (TVarData(V).VError = $80020004); {DISP_E_PARAMNOTFOUND}
end;
实例
uses ComServ, Variants, Dialogs, SysUtils;
PRocedure TOptionalParamsDemo.GetParams(const Param1: WideString; Param2,Param3: OleVariant; Param4: Integer);
var
  s2, s3: WideString;
begin
  if VarIsEmptyParam(Param2) then
    s2 := ' empty '
  else
    S2 := ' not empty ';
  if VarIsEmptyParam(Param3) then
    s3 := ' empty '
  else
    S3 := ' not empty ';
  ShowMessage(Format('Param1[%s] Param2[%s] Param3[%s] Param4[%d]',[Param1, s2, s3, Param4]));
end;

 

procedure TForm1.Button1Click(Sender: TObject);
var
  V: Variant;
begin
  V := IDispatch(CoOptionalParamsDemo.Create());
  V.GetParams('123');
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
  AIntf: IOptionalParamsDemo;
  V: Variant;
begin
  AIntf := CoOptionalParamsDemo.Create();
 // AIntf.GetParams('', EmptyParam, 9, 4);
  V := IDispatch(AIntf);
 // V.GetParams('123', '123', '123', '123');
  V.GetParams();
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var
  AIntf: IOptionalParamsDemo;
  V: Variant;
begin
  AIntf := CoOptionalParamsDemo.Create();
 // AIntf.GetParams('', EmptyParam, 9, 4);
  V := IDispatch(AIntf);
  V.GetParams('123', '123');
 // V.GetParams();
end;
 
procedure TForm1.Button4Click(Sender: TObject);
var
  V: Variant;
begin
  V := IDispatch(CoOptionalParamsDemo.Create());
  V.GetParams('123', '123', 123);
end;
procedure TForm1.Button5Click(Sender: TObject);
var
  V: Variant;
begin
  V := IDispatch(CoOptionalParamsDemo.Create());
  V.GetParams('123', 123, 123, 6);
end;


上一篇:算术编码算法

下一篇:发布程序时对ODBC数据源的配置方法

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
学习交流
热门图片

新闻热点

疑难解答

图片精选

网友关注