Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Установка бита

6.0K
24 апреля 2005 года
kuma
19 / / 28.10.2004
dlya cheqo eto nujno vobshem? v kakix situasiyax polezno? esli mojno, pokajite v malenkoy proqramme ispolzovaniye
247
24 апреля 2005 года
wanja
1.2K / / 03.02.2003
Цитата:
Originally posted by kuma
dlya cheqo eto nujno vobshem? v kakix situasiyax polezno? esli mojno, pokajite v malenkoy proqramme ispolzovaniye


Дял чего? Да много для чего. Чтобы потом проверить, например...

6.0K
25 апреля 2005 года
kuma
19 / / 28.10.2004
Цитата:
Originally posted by wanja
Дял чего? Да много для чего. Чтобы потом проверить, например...



a qde primer? :)

302
25 апреля 2005 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by kuma
a qde primer? :)


Посмотри в хелпе справку о TColor. Там не совсем биты (хотя как посмотреть), но тоже из этой оперы.

247
25 апреля 2005 года
wanja
1.2K / / 03.02.2003
Цитата:
Originally posted by Sagittarius
Посмотри в хелпе справку о TColor. Там не совсем биты (хотя как посмотреть), но тоже из этой оперы.


Ну, например, обращал(а) ли ты внимание на то ,ч то у всяких WINAPI (и не только) процедур, опции задаются через or? Почему, как ты думаешь?

10
25 апреля 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by wanja
Ну, например, обращал(а) ли ты внимание на то ,ч то у всяких WINAPI (и не только) процедур, опции задаются через or? Почему, как ты думаешь?


Даже и не WinAPI:

 
Код:
S := TFileStream.Create('Test1.txt', fmOpenRead or fmShareDenyWrite);
247
26 апреля 2005 года
wanja
1.2K / / 03.02.2003
Цитата:
Originally posted by Freeman
Даже и не WinAPI:
 
Код:
S := TFileStream.Create('Test1.txt', fmOpenRead or fmShareDenyWrite);


Ну, допустим у твоей функции(или не твоей) есть много булевских опций. Тогда ысем им даешь один параметр, устанавливаешь.сбрасывешь соответствующие биты и вперед.

303
26 апреля 2005 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by kuma
dlya cheqo eto nujno vobshem? v kakix situasiyax polezno? esli mojno, pokajite v malenkoy proqramme ispolzovaniye


В Дельфи, ИМХО, лучше пользоваться множествами. И понятнее, и гемора меньше. Кстати все компоненты так и реализованы. Сравним:
1. Код с битовыми полями

Код:
const
    Option1 = 1;
    Option2 = 2;
    Option3 = 4;

procedure MyProc(Options: byte);
begin
    if (Options and Option1) = Option1 then ...
    ...
end;

// Вызов процедуры
MyProc(Option1 or Option2);

2. Код с множествами
Код:
type
    TMyOption = (Option1, Option2, Option3);
    TMyOptions = set of TMyOptions;
...

procedure MyProc(Options: TMyOptions);
begin
    if Option1 in Options then ...
    ...
end;

// Вызов процедуры
MyProc([Option1, Option2]);
253
08 мая 2005 года
Proger_XP
1.5K / / 07.08.2004
Вообще, установка битов нужна что бы в одном параметре передать сразу несколько
Например, если N-ый бит стоит в нуле, значит этот параметр False, иначе - True
 
Код:
const
Par1 = $0000001
Par2 = $1000000
Par3 = $0001000

 begin
ParMixed := Par1 or Par3; // $0001001
....
Parameter1 := Boolean(StrToInt(IntToStr(ParMixed)[8]));
Parameter2 := Boolean(StrToInt(IntToStr(ParMixed)[1]));

З.Ы.: С множествами проще ))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог