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

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

and, or


Хочу знать ©   (2006-08-16 15:18:00) 

Здраствуйте. Подскажите что делает выделенная строка.
Часто встречается такое, непойму для чего.
......
function GetData(Data: Integer): Integer;
begin
 Data:= (Data and 7); //Вот, что это
 result:=GetGlobalData(Data);
end;
end;


в процедуру GetData передается значение Data  в диапазоне 0..7
?????????????????????????????????????????????????????????????????


Германн   (2006-08-17 01:43:00) [1]


> Ну уж нет. Цитирую автора, пост [0]:
>
> > в процедуру GetData передается значение Data  в диапазоне
> > 0..7

В таком случае ещё бОльшая бодяга! Ничего никто не потеряет! Но приведённый контекст, имхо, может означать, что в данную процедуру надопередать значения Data в диапазоне 0..7, чтобы не мешали другие, более старшие биты.


Джо   (2006-08-17 01:07:00) [2]

> [17] Германн ©   (17.08.06 00:44)
> В Data может быть "запаковано" весьма большое количество
> информации!


Ну уж нет. Цитирую автора, пост [0]:

> в процедуру GetData передается значение Data  в диапазоне
> 0..7


Германн   (2006-08-17 00:44:00) [3]

Ну что вы развели тут такую бодягу?
В Dataможет быть "запаковано" весьма большое количество  информации! А в процедуру GetData передается значение Data  в диапазоне 0..7 т.е.только три младших бита. Если сия процедура должна только их и учитывать!


Ketmar   (2006-08-16 22:25:00) [4]

> [15] Ketmar ©   (16.08.06 22:23)
только надо отлавливать в коде try ... except end;и жестоко убивать вместе с аффтаром. %-)


Ketmar   (2006-08-16 22:23:00) [5]

> [14] Джо ©   (16.08.06 22:20)
скорее, архитектуры. %-) если допускается случай прихода "не того" -- то raise. если нет -- то это однозначно баг, и тогда ASSERT().
однако дискуссия пустая, имо... %-)


Джо   (2006-08-16 22:20:00) [6]

> [13] Ketmar ©   (16.08.06 22:14)
> > [12] Джо ©   (16.08.06 22:04)
> а одно другому не мешает. не всегда можно обойтись только
> compile-time проверками.

Не всегда, конечно. Это я так, общие замечания :) Но, если данные "приходят извне" я бы сделал-таки отдельную процедуру их валидации с rais'ом, а не Assert'ом. Но это дело вкуса, разумеется.


Ketmar   (2006-08-16 22:14:00) [7]

> [12] Джо ©   (16.08.06 22:04)
а одно другому не мешает. не всегда можно обойтись только compile-time проверками.


Джо   (2006-08-16 22:04:00) [8]

> [11] Ketmar ©   (16.08.06 22:01)
> > [9] TUser ©   (16.08.06 16:53)
> лучше ASSERT(). %-)

А еще лучше: TMyType = 0..7;


Ketmar   (2006-08-16 22:01:00) [9]

> [9] TUser ©   (16.08.06 16:53)
лучше ASSERT(). %-)


Anatoly Podgoretsky   (2006-08-16 19:50:00) [10]

Это точно, это не защита, а диверсия.


TUser   (2006-08-16 16:53:00) [11]

> Смыслом может быть защита функции от неожидаемых входных параметров.

При неожиданных входных параметрах такая "защита" приведет к неожиданному результату. Защита - это raise, имхо.


Хочу знать   (2006-08-16 16:46:00) [12]


> McSimm ©   (16.08.06 15:21) [2]

Спасибо. Почитаем.
Спасибо всем за ответы.


McSimm   (2006-08-16 15:33:00) [13]


> Zeqfreed ©   (16.08.06 15:29) [5]

Джо тоже прав. С точки зрения двоичной арифметики операция действительно бессмысленная. Я лишь высказал предположение скорее из области стиля программирования.


Джо   (2006-08-16 15:31:00) [14]

> Смыслом может быть защита функции от неожидаемых входных
> параметров.

Очень даже может быть.


Zeqfreed   (2006-08-16 15:29:00) [15]

McSimm прав, я думаю, выбираются только младшие три бита.


McSimm   (2006-08-16 15:25:00) [16]


> Data and 7 с учетом того, что "значение Data  в диапазоне
> 0..7" операция бессмысленная.


Смыслом может быть защита функции от неожидаемых входных параметров.


Джо   (2006-08-16 15:22:00) [17]

> Data:=(Data and 7);

Data and 7с учетом того, что "значение Data  в диапазоне 0..7" операция бессмысленная. Ибо всегда равна значению Data.


McSimm   (2006-08-16 15:21:00) [18]

http://www.delphikingdom.ru/lyceum/seminar.asp?ID=1


Хочу знать   (2006-08-16 15:19:00) [19]

В теме написал еще и or, потому что, и с ним иногда встречается чтонибудь.


Наверх

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