Arrays 数组到字符串转换pascal

Arrays 数组到字符串转换pascal,arrays,string,delphi,pascal,Arrays,String,Delphi,Pascal,因此,我试图在Delphi7中使用此函数将数组转换为字符串。下面是我的函数,但当我调用它时,将数组传递给它,它会创建一个错误,说明: '不兼容类型:'数组'和'动态数组' 有人知道为什么会出错吗?谢谢 function ArrayToString(charArray: array of char): string; var i: integer; res: string; begin result := 'a'; for i := low(charArray) to High(c

因此,我试图在Delphi7中使用此函数将数组转换为字符串。下面是我的函数,但当我调用它时,将数组传递给它,它会创建一个错误,说明:

'不兼容类型:'数组'和'动态数组'

有人知道为什么会出错吗?谢谢

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是我的数组

您可以看到在所有情况下都能工作的可复制代码

虽然我没有看到Delphi7,但怀疑它的行为是否不同

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;

您还没有显示TGPW是。在任何情况下,请阅读关于开放数组的帮助主题-函数的参数。我刚刚发现,如果我使用固定数组而不是动态数组调用函数,它是有效的…因此我觉得沿着这些线我觉得接近答案…显示数组定义和函数调用的示例。您必须显示可复制的代码。主题实现虽然不是最优的,但应该同时适用于静态和动态字符数组。仅供参考,您的函数一开始就不需要了。您可以使用编译器的内在SetString函数从字符数组中创建字符串:SetString、pchartgw、lengthpw;