linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > Delphi >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·HexToStr函数和StrToHex函数
·Delphi中的进制转换
·delphi轻松设置无边框透明窗体
·delphi第三方控件安装(Ehlib)
·DELPHI组件安装全攻略
·delphi动态创建控件
·开发工具比较Visual C++ VS De
·delphi完整身份证效验程序实例
·delphi中的Format函数详解
·delphi编程获取打印机的打印任
·如何判断文本文件的编码格式
·深入研究Variant数组
·用delphi编写网络游戏的外挂
·Delphi技巧-用户自定义数据类型
·delphi设置控件透明
最新文章
·在应用程序中跟踪MOUSE的坐标
·压缩和修复MS Access 2000文件
·DELPHI 6.0 动画制做
·怎样在Delphi中调用LastError信
·怎样得到主域服务器名称
·怎样利用递归实现删除某一目录
·读出主键下所有项
·如何制作照片底片效果的图像(
·获得Modem的状态
·WebBrowser屏幕滚动的实现,设
·有关字符串处理的小技巧
·Delphi建立键盘鼠标动作纪录与
·Delphi中布尔类型辨析
·DELPHI程序注册码设计
·图形的不规则的Copy
Google
 
Delphi中如何使用不定参数
[ 作者:  加入时间:2007-11-12 16:25:50  来自:Linux联盟收集整理 ]
function MyFunc(Params: Array of const):Variant;r3wLinux联盟
varr3wLinux联盟
I: Integer;r3wLinux联盟
beginr3wLinux联盟
  Result := '';r3wLinux联盟
  for I := 0 to High(Args) dor3wLinux联盟
  with Args[I] dor3wLinux联盟
    case VType ofr3wLinux联盟
    vtInteger: ...r3wLinux联盟
    vtBoolean: ...r3wLinux联盟
    vtChar: ...r3wLinux联盟
    vtExtended: ...r3wLinux联盟
    vtString: ...r3wLinux联盟
    vtPChar: ...r3wLinux联盟
    vtObject: ...r3wLinux联盟
    vtClass: ...r3wLinux联盟
    vtAnsiString: ...r3wLinux联盟
    vtCurrency: ...r3wLinux联盟
    vtVariant: ...r3wLinux联盟
    vtInt64: ...r3wLinux联盟
  end;r3wLinux联盟
end;r3wLinux联盟
r3wLinux联盟
r3wLinux联盟
调用:r3wLinux联盟
r3wLinux联盟
r3wLinux联盟
r3wLinux联盟
varr3wLinux联盟
afunc:TFUNC;r3wLinux联盟
begin;r3wLinux联盟
  afunc := GetFunc('MyFunc');r3wLinux联盟
  afunc([1,2.34,'abcde']);r3wLinux联盟
r3wLinux联盟
r3wLinux联盟
GetFunc根据一个字符串返回一个TFUNC变量(函数指针);r3wLinux联盟
r3wLinux联盟
afunc([1,2.34,'abcde']);是用一个整型、一个浮点型和一个字符串型参数去调用。r3wLinux联盟
r3wLinux联盟
假设现在调用的是MyFunc:r3wLinux联盟
r3wLinux联盟
在循环中:(i := 0 to 2)r3wLinux联盟
r3wLinux联盟
r3wLinux联盟
r3wLinux联盟
i=0:VType=vtInteger,VInteger=1r3wLinux联盟
r3wLinux联盟
i=1:VType=vtextended,VExtended^=2.34r3wLinux联盟
r3wLinux联盟
i=2:VType=vtAnsiString,string(VAnsiString)='abcde'r3wLinux联盟
r3wLinux联盟
r3wLinux联盟
详见TVarRec的帮助.r3wLinux联盟
r3wLinux联盟
不过这种方法无法得到函数的参数信息,调用者必须保证参数匹配,或所有的函数都要能处理任意个数任意类型 的参数,更好的方法是使用Automation对象,由于内容太多,我就不多讲了,用Delphi编写Automation对象非赏容 易,调用也很容易,因为Delphi内置了对Automation对象的支持,可要按字符串调用反而要自己去做了,你可以看 一下MSDN中IDispatch的帮助.C++Builder由于没有Automation对象的内置支持,所以是用字符串来查找 Automation对象的方法的,反而容易实现你的要求.r3wLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·教你如何用Delphi生成GBK码表  (2007-11-12 16:24:16)
 ·精确的CPU识别delphi代码  (2007-11-12 16:20:41)
 ·delphi破解屏幕保护密码  (2007-11-12 16:19:05)
 ·delphi获取OutLook相关电话本资料  (2007-11-12 16:18:30)
 ·Delphi学习:图像放大漫游  (2007-11-12 16:17:14)
 ·在DELPHI中如何调用系统对话框  (2007-11-12 16:16:43)
 ·Delphi的发展历程-历数Delphi七个版本  (2007-11-12 16:16:05)
 ·回调函数与Delphi的事件模型  (2007-11-12 16:15:36)
 ·Delphi记录类型变量的内存分配  (2007-11-12 16:15:06)
 ·对使用Delphi制作DLL复用文件的建议  (2007-11-09 11:28:10)