当然,即使我能做到这一点......
var
testarray : array of string;
setlength(testarray, 5);
但是如果我想变得聪明并且有一个程序我通过这样的referance传递数组我不能这样做!
procedure DoStuffWithArray(var passedarray : array of string);
begin
setlength(passedarray, 5);
end;
编译器在我的proc中的单行代码中说“不兼容的类型”。
如果我在调用proc之前执行setlength,我可以在数组上执行其他内容,例如设置set元素值,但是我不能在proc中执行setlength,这是我想要做的。
非常感谢任何帮助,谢谢大家。
答案 0 :(得分:17)
作为参数的数组类型需要具有名称。所以:
type TStringArray = array of string;
procedure DoStuffWithArray(var passedarray: TStringArray);
然后它会起作用。
但是如果你需要一个动态大小的字符串组,你可能会发现TStringList更容易使用。