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

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  关于在COM中使用可选参数的研究
  在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;
  实例下载: http://www.megspace.com/computers/coreware/

  编辑特别推荐:

  全国计算机等级考试资料下载

  全国计算机等级考试论坛

  如何应付二级考试中的公共基础知识

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答