Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.15;
Скачать: CL | DM;

Вниз

Непонятный глюк в Delphi   Найти похожие ветки 

 
Calligraff ©   (2008-12-18 12:02) [0]

Добрый день.
после кропотливого изучения мною написанного, обнаружился совершенно не логичный и не понятный глюк.
Есть функция:

function SaveContactListToFile(CL: PRRECEIVE_CONTACT_LIST): Boolean;
var
  k: Integer;
  DBF: file of CONTACT_LIST;
begin
AssignFile(DBF, UInf.Folder + CF_ContactLst);
ReWrite(DBF);
for k := 1 to 255 do begin
   CL.CONTACT_LIST[k].STATUS := STATE_OFFLINE;
   if (CL.CONTACT_LIST[k].ID > 0) and (CL.CONTACT_LIST[k].ID < $FFFF) then begin
      Write(DBF, CL.CONTACT_LIST[k]);
   end;
end;
CloseFile(DBF);
end;


но почему-то переменная k идет в цикле от 255 до 1 (т.е. в обратку, как например при downto), а так же игнорируется условие if (CL.CONTACT_LIST[k].ID > 0) and (CL.CONTACT_LIST[k].ID < $FFFF) then

НО! если вставить строку, ShowMessage(IntToStr(k)) после for k := 1 to 255 do begin, то тогда все нормально!

Не пойму как исправить?!


 
Сергей М. ©   (2008-12-18 12:05) [1]

Не надо ничего исправлять, это не глюк а фича оптимизатора.


 
Palladin ©   (2008-12-18 13:20) [2]


> Calligraff ©   (18.12.08 12:02) 

интересно, зачем это надо исправить? мешает?


 
clickmaker ©   (2008-12-18 13:34) [3]

> это не глюк а фича оптимизатора

так переменная k используется в цикле.
я всегда думал, что он генерит loop с декрементом cx только если значение переменной в цикле не важно


 
Palladin ©   (2008-12-18 13:37) [4]


> так переменная k используется в цикле.

если она используется, то такого быть не должно. автор где-то накосячил или обманывает.


 
Сергей М. ©   (2008-12-18 13:43) [5]


> clickmaker ©   (18.12.08 13:34) [3]


Судя по тому, что у автора еще что-то там еще и "игнорируется", он видимо действительно где-то накосячил.



Страницы: 1 вся ветка

Текущий архив: 2009.02.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
3-1214849398
arturich
2008-06-30 22:09
2009.02.15
Соединение с Oracle через Database Explorer


2-1231144302
zzz
2009-01-05 11:31
2009.02.15
SysMenu


15-1229536053
БарЛог
2008-12-17 20:47
2009.02.15
Инвентаризация железа на компьютерах в домене по сети


2-1230973748
studenttgata
2009-01-03 12:09
2009.02.15
Как получить относительный путь к файлу через OpenDialog?


15-1229444025
dumb
2008-12-16 19:13
2009.02.15
Некоректно отображаются иконки в Windows