Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];

Вниз

Помогите перевести с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.042 c
3-1153737167
yaral
2006-07-24 14:32
2006.09.24
Результаты выполнение ХП с индексами и без


2-1157437863
worldmen
2006-09-05 10:31
2006.09.24
Программное изменение языков.


4-1148470794
Nostradamus
2006-05-24 15:39
2006.09.24
моя DLL подгружается другими приложениями


1-1155045210
Kiloper
2006-08-08 17:53
2006.09.24
Есть ли аналог компонентов MEMO или RichEdit в delphi?


15-1157395719
Колдун
2006-09-04 22:48
2006.09.24
Рисование поверх всех окон





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский