delphi - Delphi中无法将char分配给数组
问题描述
有手续一览
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]
)。如果编译器选项“范围检查”打开,它将出现。否则,您会遇到访问冲突,因为您正在访问未分配的内存区域。
要使其正常工作,请执行以下操作:
B[1] := A[1,1]; // Or B[1] := A[1][1];
推荐阅读
- rust - 如何从移动到结构中的 Vec 检索项目?
- excel - 如何从此功能中排除其他工作表?
- python - 当文件存储在列表或对象中时,为什么文件的最后访问时间会发生变化?
- python - 将负载分散到 GLPK 中不同的等成本变量上
- angular - 浏览器在 azure app 服务托管的根 index.html 上保留一个令人困惑的 Angular 应用程序缓存版本
- jquery - CSS3 淡出/淡入文本和图像从和到透明
- flutter - 如何在 quick_actions 上使用图标
- arrays - 使用某些东西是一种不好的做法吗?.isEmpty == true
- r - fsolve 在没有解决方案时给出错误 + 帮助我回溯错误消息
- javascript - 以正确的方式调用模板