Delphi数组构造函数替代方案

Delphi数组构造函数替代方案,delphi,Delphi,我有一个应该调用的方法,它以数组构造函数作为参数,如下所示: myTTable.InsertRecord([var1, var2, var3]); 问题是我有大量变量,我设法将它们放入字符串数组params。但我似乎无法把它作为一个论点 所有这些都不起作用: myTTable.InsertRecord(params); myTTable.InsertRecord([params]); myTTable.InsertRecord(Slice(params, 88)); // I know I h

我有一个应该调用的方法,它以数组构造函数作为参数,如下所示:

myTTable.InsertRecord([var1, var2, var3]);
问题是我有大量变量,我设法将它们放入字符串数组
params
。但我似乎无法把它作为一个论点

所有这些都不起作用:

myTTable.InsertRecord(params);
myTTable.InsertRecord([params]);
myTTable.InsertRecord(Slice(params, 88)); // I know I have 88 elements
我找到的唯一方法是写:

myTTable.InsertRecord([params[0], params[1], params[2], ... params[87]]);
我不想这样做。还有别的办法吗

另外,我使用的是一个非常旧的Delphi版本,由于一些公司原因,我无法升级。

将(
常量数组
)作为输入。在Delphi中构造这样一个数组的典型方法是在每个值周围使用括号语法,正如您已经发现的那样

然而,const的
数组实际上是TVarRec的
数组,您可以手动构建它(注意!某些类型(如字符串)必须如何在其中传递)

例如:

procedure-DoInsert(参数:字符串数组);
变量
v:TVarRec阵列;
i:整数;
开始
设置长度(v,长度(参数));
对于i:=0到长度(参数)-1 do
开始
{$IF CompilerVersion>=20}
//德尔福2009及更高版本。。。
v[i].VType:=vtUnicode正在销毁;
v[i].VUnicodeString:=指针(参数[i]);
{$ELSE}
//德尔福2007及更早版本。。。
v[i].VType:=vTransistring;
v[i].VAnsiString:=指针(参数[i]);
{$IFEND}
结束;
myTTable.插入记录(v);
结束;
变量
params:字符串数组;
开始
设置长度(参数,88);
//根据需要填充参数。。。
DoInsert(params);
结束;

请出示
插入记录的签名
参数的类型
@StefanGlienke:谢谢@Uwe通知我我的错误。我原以为myTTable是OP自己的发明。我很难编译它,我刚检查过,结果是Delphi2。使用SetLength时会显示“字符串和数组类型不兼容”,如果我将Length(params)更改为88,情况也是一样。我想它甚至没有意识到这一点$IF@FiRas你到底有什么问题?你需要更具体一些。是
{$IF}
语句吗{$IF}
compilervision
。只需删除这些语句,并使用Delphi2的
vTransisting
块(
AnsiString
是在Delphi2中引入的,
UnicodeString
是在Delphi 2009中引入的)。@FiRas动态数组是在Delphi 4中引入的。因此,对于Delphi2,您必须手动分配数组。Delphi2是否有
GetMem()
AllocMem()
可用?无论如何分配字符串数组,都必须对
TVarRec
数组执行相同的操作