无法在Delphi中将char分配给数组

时间:2019-05-04 23:39:06

标签: delphi pascal

有程序清单

var
  A, B: array [1..5] of String;
  Ch: Char;
begin
  A[1] := 'Hello Kitty';
  Ch := A[1, 1];
  B[1, 1] := A[1, 1];
  ReadLn;
end.

Ch := A[1, 1]行效果很好,但B[1, 1] := A[1, 1]却行不通。可能是什么问题?

1 个答案:

答案 0 :(得分:4)

执行该行时:

B[1, 1] := A[1, 1];

您收到范围错误或访问冲突。

这是因为B是托管类型的数组,由编译器使用空字符串(每个字符串等于nil)初始化。

范围错误表示您正在尝试越界访问字符串元素,即B[1,1](或B[1][1])。如果启用了编译器选项“范围检查”,它将出现。否则,由于访问的是未分配的内存区域,因此会发生访问冲突。


要使其正常工作,请执行以下操作:

B[1] := A[1,1];  // Or B[1] := A[1][1];