Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IF не работает [D7, WinXP]


dimon_programmer ©   (2004-08-09 08:46:00) 

Пишу просмотрщик PCX. Код вот такой:
While not EOF(f)
do
begin
blockread(f,data,1);//читаем по одному байту
//самое интересное
IF (((data shr 6)and 3)=3) then//если старшие два бита-1
x:=(data shl 2) shr 2;
end;
В дебаге выражение после IF -true, а инструкция не выполняется, даже если else сделать.


dimon_programmer   (2004-08-09 12:17:00) [1]

Спасибо, просто не доперло как сделать.


Digitman   (2004-08-09 11:06:00) [2]


> IF (((data shr 6)and 3)=3) then//если старшие два бита-1


зачем "двигать" операнд, делая лишнее действие, если для данной проверки достаточно наложить маску ?

IF (data and $C0)= $C0 then ..


TUser   (2004-08-09 09:17:00) [3]

Так ее наверное оптимизатор пропустил. Этот x нигде не используется, поэтому - чего его считать?


Anatoly Podgoretsky   (2004-08-09 09:15:00) [4]

Как проверяешь, что не работает, могу предположить только единственное, что переменная нигде не используется.


Sergey Kaminski   (2004-08-09 08:48:00) [5]

какая "инструкция" не работает?


Наверх

Титульная страница Поиск, карта сайта Написать письмо