Я переношу программное обеспечение из Delphi 5 в Delphi XE. Я уже исправил много различий, и теперь я могу скомпилировать свой код.ERangeError on Delphi XE
Проблема в том, что иногда (в некоторых местах кода) я получаю сообщение об ошибке «Ошибка проверки диапазона».
Для Exemple, в этом коде:
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), но он делает nos решает мою проблему. Я также пытался изменить тип «Counter» на Cardinal и LongWord, без успеха
Я был бы рад за любую полезную идею!
Спасибо.
Вместо того, чтобы описывать это как остановку после «много раз», быть точным. Используйте отладчик, чтобы узнать, сколько раз вы проходите через цикл. Это должно было быть одним из первых вещей, которые вы задавали себе сами, когда видели, как он разбился. У всех переменных есть значения, которые вы ожидали от них? Если они этого не делают, как они отличаются? Почему вы ожидали, что у них будут ценности, которые вы сделали, и как они получили другие ценности? –