![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]какая "инструкция" не работает?