您现在的位置:首页 >> API >> API >> 内容

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

时间:2011/9/3 15:45:09 点击:

  核心提示:在Delphi6中设计COM组件方法时,在 Parameter flags dialog 中,选择Optional选项,即输入参数为可选,现就给出如何实现可选参数实例。监测函数function Var...
在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;

作者:wangzhidon 来源:转载
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
本类推荐
  • 没有
本类固顶
  • 没有
  • 盒子文章(www.2ccc.com) © 2017 版权所有 All Rights Reserved.
  • 沪ICP备05001939号