加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 将无限数量的参数传递给程序

发布时间:2020-12-15 10:04:08 所属栏目:大数据 来源:网络整理
导读:在Delphi中的程序写可以处理: write(TF,st1) 和 write(TF,st1,st2,st3,st4); 我想声明一个也可以这样做的过程,什么是语法? 并选择: write(TF,[st1,st3]) 不太可取,虽然我知道如何做到这一点. 主要目的是将ShortStrings传递给函数,这将从文件中进行读取调
在Delphi中的程序写可以处理:
write(TF,st1)

write(TF,st1,st2,st3,st4);

我想声明一个也可以这样做的过程,什么是语法?

并选择:

write(TF,[st1,st3])

不太可取,虽然我知道如何做到这一点.

主要目的是将ShortStrings传递给函数,这将从文件中进行读取调用,并按照定义的长度读取shortString.然而,通过它作为变体或开放数组,shortString失去了它的“大小”,成为255,这使得这个传递不可用,对我来说.
但是如果要传递打开的数组,答案仍然是.

解决方法

首先,Inc和Write都是错误的例子,因为它们都从编译器得到特殊的处理.你不能写一个类似于你自己的功能.有什么应该调查的方法.

看看超载

您可以使用不同数量的参数和不同类型创建多个版本的方法.这样的事情

procedure MyInc(var i:Integer); overload;
procedyre MyInc(var i:Integer; const N:Integer); overload;
procedure MyInc(var i:Integer; const N1,N2: Integer); overload;
procedure MyInc(var i:Integer; const N1,N2,N3: Integer):overload;

如果所需的重载数量不是很大,这是可行的.编译器可能很容易处理大量的重载,但是你可能不想写它们.当重载次数变成问题时,可以切换到数组:

使用Open Arrays作为参数

函数可以使用YourType类型数组的参数,当您调用该函数时,您可以传递尽可能多的参数:

procedure MyInc(var i:Integer; Vals: array of Integer);

然后使用它:

MyInc(i,[]); // no parameters
MyInc(i,[1]);
MyInc(i,[1,34,43,12]);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读