Главная страница
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.019 c
2-1231405184
FEV
2009-01-08 11:59
2009.02.15
Работает ли внешняя программа?


2-1231303960
Лазарь
2009-01-07 07:52
2009.02.15
Как заставит программу работать автоматически?!


2-1231168615
Цукор5
2009-01-05 18:16
2009.02.15
StringReplace


3-1214897442
Раиса
2008-07-01 11:30
2009.02.15
Количество знаков после запятой при присваивании из поля таблицы


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