当然,即使我可以做到这一点
var testarray : array of string; setlength(testarray,5);
但是如果我想得到聪明的程序,我通过这样的引用传递数组,我无法做到这一点!
procedure DoStuffWithArray(var passedarray : array of string); begin setlength(passedarray,5); end;
编译器在我的proc中的单行代码上说“不兼容的类型”.
我可以在数组上做其他的东西,就像set set元素值,如果我在调用proc之前做一个setlength,但是我不能在我的proc中做setlength,这是我想要做的.
任何帮助非常感谢,谢谢所有.
解决方法
作为参数的数组类型需要有一个名称.所以:
type TStringArray = array of string; procedure DoStuffWithArray(var passedarray: TStringArray);
然后它会工作.
但是,如果您需要一组动态大小的字符串,您可能会发现一个TStringList更容易使用.