Главная страница
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.012 c
2-1230641465
neveGreen
2008-12-30 15:51
2009.02.15
Помогите написать функцию


15-1229514723
DeeNamid
2008-12-17 14:52
2009.02.15
Антивирус определяет программу как троян


15-1229492749
девушка
2008-12-17 08:45
2009.02.15
почему не вылетало AV ???


4-1202733177
JohnJ
2008-02-11 15:32
2009.02.15
управление программой, написанной на labview


4-1205580040
Vikindos
2008-03-15 14:20
2009.02.15
Как определить хэндл главного окна