Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
ВнизНепонятная мне странность. Найти похожие ветки
← →
Unknown user © (2005-02-02 19:08) [0]Привожу код:
//вычисляет индекс параграфа и символа после перемещения в направлении Dir
procedure CalcNextCharInd(Dir:TCaretMove; const NowParaInd,NowChrInd:integer;var NextParent:TTextItem; var NextParaInd,
NextChrInd,NextCellInd:integer);
var PrInd,ChInd,LnInd,FrInd,CelInd,
RwInd,ClInd,ChHeight,ChWidth:integer;
ChPos:TPoint;
Prnt:TTextItem; Tbl:TTableItem;
label LeftRepeatCalcPara,
RightRepeatCalcPara,
UpRepeatCalcPara,
DownRepeatCalcPara;
begin
//точка 1
Prnt:=FTextItem; PrInd:=NowParaInd; ChInd:=NowChrInd;
NextParent:=Prnt; NextParaInd:=PrInd; NextChrInd:=ChInd;
//точка 2
.
.
.
end;
Вызывается эта процедура так:
CalcNextCharInd(ADir,FTo.ParaInd,FTo.CharInd,Itm,
NewTo.ParaInd,NewTo.CharInd,NewTo.CellInd);
//точка 3
и при этом NextParent,NextParaInd,NextChrInd,NextCellInd содержат в точке 1 совершенно нереальные,огромные значения, которые не изменяются и в точке 2, хотя определены до вызова процедуры. Эти значения не случайны, при каждом новом старте они повторяются. В точке 3 вижу уже измененные настоящие значения, но для NewTo.CharInd при определенных условиях оно отличается от назначенного в CalcNextCharInd на 1. Из-за чего такое может быть?
← →
Unknown user © (2005-02-03 09:42) [1]У кого-то было нечто подобное?
← →
Александр Иванов © (2005-02-03 09:44) [2]Было - алгоритмическая ошибка
← →
Unknown user © (2005-02-03 09:51) [3]А как объяснить такое поведение компилятора? Если переменная не используется после записи в нее значения то в целях оптимизации компилятор может это значение и не записывать, но тут переменные используются. В чем же дело?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.044 c