我正在将软件从 Delphi 5 迁移到 Delphi XE。我已经纠正了很多差异,现在我可以编译我的代码了。
发生的问题是有时(在代码的某些地方),我收到错误“范围检查错误”。
例如,在此代码中:
function CopyChar(Ori : string; var Des : Array of char) : Boolean;
var Msg : string;
Counter : integer;
SizeDes : integer;
begin
SizeDes:= SizeOf(Des);
for Counter:= 1 to SizeDes do begin
Des[Counter-1]:= ' ';
end;
Ori:= Trim(Ori);
Msg:= '';
SizeDes:= Min(Length(Ori),SizeDes);
for Counter:= 1 to SizeDes do begin
Des[Counter-1]:= char(Ori[Counter]);
end;
CopyChar:= True;
end;
通过 Des[Counter-1] := ' '; 行时,我在运行时收到错误消息 错误不是在第一次通过循环时发生,而是在很多次之后发生。
我试图禁用 Rance Checking ($R) 但它并没有解决我的问题。我还尝试将“计数器”的类型更改为 Cardinal 和 LongWord,但没有成功
我会很高兴有任何有用的想法!
谢谢。