数组到字符串转换 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;
所以我尝试在 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;