无法将 char 分配给 Delphi 中的数组
Can't assign char to array in Delphi
有程序列表
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]
不行。可能是什么问题?
执行行时:
B[1, 1] := A[1, 1];
您收到范围错误或访问冲突。
这是因为B
是一个托管类型的数组,由编译器用空字符串(每个等于nil)初始化。
范围错误意味着您正试图越界访问字符串元素,即 B[1,1]
(或 B[1][1]
)。如果编译器选项 "Range checking" 打开,它就会出现。否则您会遇到访问冲突,因为您正在访问未分配的内存区域。
要使其正常工作,请执行以下操作:
B[1] := A[1,1]; // Or B[1] := A[1][1];
有程序列表
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]
不行。可能是什么问题?
执行行时:
B[1, 1] := A[1, 1];
您收到范围错误或访问冲突。
这是因为B
是一个托管类型的数组,由编译器用空字符串(每个等于nil)初始化。
范围错误意味着您正试图越界访问字符串元素,即 B[1,1]
(或 B[1][1]
)。如果编译器选项 "Range checking" 打开,它就会出现。否则您会遇到访问冲突,因为您正在访问未分配的内存区域。
要使其正常工作,请执行以下操作:
B[1] := A[1,1]; // Or B[1] := A[1][1];