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

原创 2002年05月24日 12:32:00
关于在COM中使用可选参数的研究

作者:wangzhidong(Steven Bob)

创作日期:2002-3-27

Delphi6中设计COM组件方法时,在 Parameter flags dialog 中,选择Optional选项,即输入参数为可选,现就给出如何实现可选参数实例。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

监测函数

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/

北京大学 科学道德与学术规范基本知识测试 题库

【题库太大了,只试出了一部分,运气不是特别差的话通过应该没问题了吧...目测题库规模应该有300+】 1.          是以人的观念、精神、情感和价值,即以人的主观精神世界及其所沉淀的精神...
  • u013012544
  • u013012544
  • 2016年09月04日 11:04
  • 24246

关于编程范式的分析与理解

 随着编程(programming、偶不喜欢说程序设计)方法学和软件工程研究的深入,特别是OO思想的普及,范式(paradigm)以及编程范式等术语渐渐出现在人们面前。 面向对象编程(OOP)...
  • kexin1212
  • kexin1212
  • 2014年07月23日 10:22
  • 1544

[BASIC-20] 数的读法

基础练习 数的读法   时间限制:1.0s   内存限制:512.0MB 问题描述   Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上...
  • u011506951
  • u011506951
  • 2014年05月21日 09:15
  • 1516

MSSQL中存储过程的可选参数的定义和使用_SQL高亮显示

编辑日志: 160508创建 160530优化添加:显式传参 160916SQL语句高亮显示、格式优化 可选参数的存在,可以极大的降低代码的重复冗余。在数据库开发中,也是如此。现在针对MSSQL...
  • hjnth
  • hjnth
  • 2016年09月16日 10:56
  • 833

VB 可选参数举例

  • 2010年06月07日 14:56
  • 37KB
  • 下载

精彩编程与编程技巧-缺省值和可选参数...

  • 2009年10月10日 19:22
  • 286B
  • 下载

C#中可选参数和命名参数的定义及使用

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 可选参...
  • seattle1215
  • seattle1215
  • 2011年08月03日 19:30
  • 5876

Decorator装饰器定义可选参数

Decorator装饰器定义可选参数
  • jw690114549
  • jw690114549
  • 2017年04月06日 16:16
  • 102

Objective-C中可选参数的实现

Objective-C中可选参数的API也表多,例如: - (instancetype)initWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTIO...
  • lcl130
  • lcl130
  • 2014年12月14日 11:44
  • 484

jquery uploadify插件可选参数的详细介绍

以下是可选项的参数说明:(红色的属性代表常用的) 1uploader上传控件的主体文件,flash控件   默认值='uploadify.swf'2script 相对路径的后端脚本,它将处理您上传的文...
  • sven_xu
  • sven_xu
  • 2015年06月02日 09:13
  • 223
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于在COM中使用可选参数的研究
举报原因:
原因补充:

(最多只允许输入30个字)