Главная страница
    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.039 c
2-1156642642
Juri
2006-08-27 05:37
2006.09.24
Помогите профильтровать базу данных по дате


15-1157462920
stud
2006-09-05 17:28
2006.09.24
народ а аська работает??


2-1157266373
PWD
2006-09-03 10:52
2006.09.24
Скопировать прямоугольную область с одного TBitmap в другой


15-1157610374
Stexen
2006-09-07 10:26
2006.09.24
VS2005


15-1157554581
Pazitron_Brain
2006-09-06 18:56
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский