Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
6-1198764017
BillyJeans
2007-12-27 17:00
2009.02.15
Поиск ресурсов в сети...


2-1231149365
Iriss
2009-01-05 12:56
2009.02.15
не отображается в трее


6-1198506555
Palladin
2007-12-24 17:29
2009.02.15
WinInet и ERROR_INTERNET_SECURE_CHANNEL_ERROR


15-1229711796
Кто б сомневался
2008-12-19 21:36
2009.02.15
Регистрация частного предпринимателя для продажи программ


2-1231410906
EastGod
2009-01-08 13:35
2009.02.15
Альтернативные потоки файлов




   Наверх