我编写了一个函数,它通过将动态数组转换为字符串并询问长度(trim(string))来给出动态数组的长度;
function arraylength(a: array of char): integer;
var i: integer;
s: string;
begin
for i:=0 to high(a) do
begin
s[i] := a[i-1];
Result := length(trim(s));
end;
end;
在我的主程序中,我将文本读入字符串,将其转换为数组
procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin
for i:=0 to length(sString) do
begin
cChar[i] := sString[i];
end;
end;
并且做:
ShowMessage(IntToStr(arraylength(cChar)));
我收到了标题中所述的错误。
答案 0 :(得分:4)
将数组传递给delphi中的过程和函数时,应将它们声明为单独的类型。因此:
type
MyArray = array of char;
然后
function arraylength(a: MyArray ): integer;
BTW:你为什么不使用像Length()这样的内置函数?在Delphi2009中,string字符串是unicode字符串,因此Length以字符形式返回Length,而不是以字节为单位。