在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]);