数组到字符串转换 pascal

array to string conversion pascal

所以我尝试在 Delphi7 中使用此函数将数组转换为字符串。下面是我的函数,但是当我调用它时,将一个数组传递给它,它会产生一条错误消息:

'incompatible types: 'Array' and 'dynamic array'.

有谁知道为什么会报错?谢谢

function ArrayToString(charArray: array of char): string;
var
  i: integer;
  res: string;
begin
  result := 'a';
  for i := low(charArray) to High(charArray) do
    res := res + charArray[i];
  result := res;
  writeln(res);
end;

我用这一行来称呼它:

var
  TGPW: array of char;
...
new := (ArrayToString(TGPW)); 

//new 是我最后想要的字符串,TGPW 是我的数组

您可以看到适用于所有情况的可重现代码。

虽然我没有 Delphi 7 但怀疑它的行为是不同的。

procedure TForm1.Button14Click(Sender: TObject);
var
  D: array of char;
  S: array [0..1] of char;
  st: string;

function Foo(charArray: array of char): string;
var
  i: integer;
begin
  Result := 'a';
  for i := Low(charArray) to High(charArray) do
    Result := Result + charArray[i];
end;

begin
  SetLength(D, 2);
  D[0] := 'D';
  D[1] := 'y';
  S[0] := 'S';
  S[1] := 't';
  Memo1.Lines.Add(Foo(D));
  Memo1.Lines.Add(Foo(S));
  SetString(st, PChar(@D[0]), Length(D));
  Memo1.Lines.Add('a' + st);
end;

首先声明类型为

type
  ArrayChar = array of char;

然后使用函数作为 :

function ArrayCharToString(A: ArrayChar): String;
var i: integer;
begin
  Result := '';
  for i := 0 to High(A) do
    Result := Result + A[i];
end;