Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

Помогите перевести с C на Pascal   Найти похожие ветки 

 
AlexKniga ©   (2006-08-11 10:13) [0]

#define EMF_FORWDED ( 1 << 3 )

В Паскалевском написании это будет
const EMF_FORWDED = ( 1 shl 3 );
?


 
Jeer ©   (2006-08-11 10:21) [1]

Будь проще:)

const
 EMF_FORWDED = 8;


 
AlexKniga ©   (2006-08-11 10:41) [2]

Jeer
Спасибо!
Я не был уверен, чтот "<<" в данном случае битовый сдвиг.


 
DrPass ©   (2006-08-11 10:52) [3]


> #define EMF_FORWDED ( 1 << 3 )

Наверное, писавший этот дефайн программист истекал слюнями от собственной крутизны


 
Desdechado ©   (2006-08-11 12:17) [4]

А что, в Дельфи {$DEFINE} уже непопулярен?


 
Юрий Зотов ©   (2006-08-11 12:33) [5]

> Desdechado ©   (11.08.06 12:17) [4]

Популярен, но имеет несколько другое назначение.


 
Desdechado ©   (2006-08-11 12:42) [6]

> Юрий Зотов ©   (11.08.06 12:33) [5]
Какое из назначений использовалось в тексте, приведенном автором, не известно. В си оно многозначное. Можно использовать как подстановку в тексте, а можно для всяких условностей при компиляции, а можно и комбинировать.


 
clickmaker ©   (2006-08-11 13:21) [7]


> Наверное, писавший этот дефайн программист истекал слюнями
> от собственной крутизны

в соседней ветке вообще (1<<0). Вот уж где крутизна )


 
evvcom ©   (2006-08-11 13:28) [8]

> [7] clickmaker ©   (11.08.06 13:21)

Еще на это можно было || 0 добавить и другие подобные прибамбасы :)


 
Don Nikola ©   (2006-08-11 13:32) [9]

2AlexKniga:

Вы думаете, что сишники могли написать "1 shr 3"? Они хоть и сишники, но не настолько же.


 
evvcom ©   (2006-08-11 13:32) [10]

> [3] DrPass ©   (11.08.06 10:52)

Кстати, такая запись может быть была сделана из соображений наглядности при работе с битами, что в EMF_FORWDED установлен 3 бит. А в восьмерке это еще надо посчитать.


 
Jeer ©   (2006-08-11 13:36) [11]

DrPass ©   (11.08.06 10:52) [3]
clickmaker ©   (11.08.06 13:21) [7]

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

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

Достаточно часто используются маскирующие/выделяющие константы,
а железячники  помнят наизусть назначения бит в интерфейсах.:)

Если мне нужно выделить 23-й бит, то логично определить константу
как
c23b = 1 shl 23;
а не считать 2^23 и
c23b = 8388608;
тем более, что будет абсолютно непонятно, сколько там единиц.

Или для выделение 23 и 25 бит я точно напишу
c25_23 = 5 shl 23;
а не 41943040 :))

Еще пример - вызов функции с флагом, значение которого определяется как cA or cB or cF и тп

Логично определять константы таким образом:
cA = 1 shl 0;
cB = 1 shl 1
cC = 1 shl 2;

Так шта...


 
DrPass ©   (2006-08-11 13:40) [12]


> Jeer ©   (11.08.06 13:36) [11]


> evvcom ©   (11.08.06 13:32) [10]

А чем hex-константы не подходят-то? Запомнить 16 кодов проще чем таблицу умножения.


 
Jeer ©   (2006-08-11 14:01) [13]

DrPass ©   (11.08.06 13:40) [12]

Но надежнее, опять-таки, явно указывать нужный бит
а с FA можно и ошибиться при переводе.

Пример, маскирующая константа на 7-й бит

const
c7reset: word =  MaxWord - (1 shl 7);


 
evvcom ©   (2006-08-11 14:13) [14]

> [12] DrPass ©   (11.08.06 13:40)
> А чем hex-константы не подходят-то?

Подходят, почему нет-то? Просто у каждого свои восприятия различных представлений. Я просто предположил причину.



Страницы: 1 вся ветка

Текущий архив: 2006.09.24;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
1-1155530573
karton
2006-08-14 08:42
2006.09.24
Компоненты для экспорта из FastReport


6-1146596297
Evereve
2006-05-02 22:58
2006.09.24
блокировать соединение с Интернетом


1-1155283897
vamp_avp
2006-08-11 12:11
2006.09.24
Эмуляция нажатия клавиши в неактивном сонсольном приложении


2-1157531452
P
2006-09-06 12:30
2006.09.24
Как вызвать HasOverlappedIoCompleted из дельфи


15-1157054618
Игорь Шевченко
2006-09-01 00:03
2006.09.24
Дима Акуличев aka DiamondShark, с днем рождения!