Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.005 c
2-1230585306
AlexF
2008-12-30 00:15
2009.02.15
Разослать почту


2-1230555975
...zZ
2008-12-29 16:06
2009.02.15
GetSystemMetrics


1-1207728389
Максим
2008-04-09 12:06
2009.02.15
ciacomport


2-1231224543
Igor'
2009-01-06 09:49
2009.02.15
Как узнать название поля DBGridEh -где изменилось значение?


2-1231342302
Pavelkq
2009-01-07 18:31
2009.02.15
MS Access - доступ на уровне пользователей.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский