无效类型:'数组'和'动态数组'

时间:2009-08-05 09:21:03

标签: delphi arrays char

我编写了一个函数,它通过将动态数组转换为字符串并询问长度(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)));

我收到了标题中所述的错误。

1 个答案:

答案 0 :(得分:4)

将数组传递给delphi中的过程和函数时,应将它们声明为单独的类型。因此:

type
  MyArray =  array of char; 

然后

function arraylength(a: MyArray ): integer;

BTW:你为什么不使用像Length()这样的内置函数?在Delphi2009中,string字符串是unicode字符串,因此Length以字符形式返回Length,而不是以字节为单位。