Форум: "Прочее";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
ВнизНепонятный глюк в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c