我写了一个函数,给我一个动态数组的长度通过将其转换为字符串,并要求长度(修剪(字符串));

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)));

我得到的误差作为在标题中所述。

有帮助吗?

解决方案

当传递数组到在Delphi过程和函数应该声明它们作为单独的类型。因此:

type
  MyArray =  array of char; 

和然后

function arraylength(a: MyArray ): integer;

BTW:你为什么不使用内置的功能,如长度()?在Delphi2009类型字符串unicode字符串,所以长度返回长度以字符而不是字节。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top