如何用Delphi写一个参数数目可变的函数

masterz 2001-08-16 12:00:46
就像int printf( const char *format [, argument]... );
可以使用任意数目的参数
...全文
306 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
TechnoFantasy 2001-11-10
  • 打赏
  • 举报
回复
用array可以实现int printf( const char *format [, argument]... );这样功能的,例如:

procedure a1(a: integer; b: array of integer);
var
i:integer;
begin
showmessage('procedure begin');
for i:=low(b) to high(b) do
showmessage(inttostr(b[i]));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
a1(2,[3,4,5]);
a1(2,[]);
end;


子程序a1的参数b就是一个动态数组,在调用可以动态设定参数。
masterz 2001-11-10
  • 打赏
  • 举报
回复
int wsprintf(
LPTSTR lpOut, // output buffer
LPCTSTR lpFmt, // format-control string
... // optional arguments
);
这个SDK函数参数个数可变的
masterz 2001-11-10
  • 打赏
  • 举报
回复
...
chechy 2001-08-17
  • 打赏
  • 举报
回复
如果用重载,那不是要写累死了。printf可不是重载实现的。
windfantasy 2001-08-17
  • 打赏
  • 举报
回复
对,用函数重载来实现!
kevin_gao 2001-08-16
  • 打赏
  • 举报
回复
同意highroad(流冰)
highroad 2001-08-16
  • 打赏
  • 举报
回复
用超载吧,多写几个函数,名字一样,参数不一样就可以了。
cszhz 2001-08-16
  • 打赏
  • 举报
回复
知道c中main函数的实现吗?
chechy 2001-08-16
  • 打赏
  • 举报
回复
补充一点,参数中array of Integer等等地东西不是动态数组。应该是Open Array Arguments。
动态数组是D4才提出的,而Open Array从D1开始就有了。最好的例子就是Format函数(类似于C地printf)。
nne998 2001-08-16
  • 打赏
  • 举报
回复
function yourfunc(szSs:TStrings):string;
var
tmp:string;
i:integer;
begin
result:='';
for i:=0 to szSs.count-1 do
tmp:=tmp + szSs.strings[i];

result:=tmp;
end;



chechy 2001-08-16
  • 打赏
  • 举报
回复
访问其中的内容就是靠
High(a), Low(a)
windindance 2001-08-16
  • 打赏
  • 举报
回复
不直接支持吧。
可以使用动态数组:
procedure func(a:array of Variant);

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧