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

Вниз

Битовые флаги   Найти похожие ветки 

 
QAT   (2008-03-25 18:57) [0]

Совсем запутался. Например у меня есть DWord, задача сохранить в него состояние двух CheckBox"ов при помощи битовых флагов. И потом считать их.

MyDWord := MyDWord xor ($0001 and Word(WordBool(CheckBox1.Checked)));
MyDWord := MyDWord xor ($0002 and Word(WordBool(CheckBox2.Checked)));


Я хочу в зависимости от состояния CheckBox"ов, либо установить например $0001 во флаге, либо убрать его. Как это сделать?

И как сичтывать надо такие данные, что бы потом по DWord"у восстановить состояние CheckBox"ов?

Спасибо.


 
Reindeer Moss Eater ©   (2008-03-25 19:02) [1]

Примерно так:

if cb1.Checked then MyDword := (MyDword or 1) else (MyDword := MyDword and $FFFFFFFE);

cb1.Checked := (MyDWORD and 1) = 1;


 
Германн ©   (2008-03-25 19:03) [2]

if CheckBox1.Checked then MyDWord := MyDWord or $0001
else MyDWord := MyDWord and $FFFE;


 
Reindeer Moss Eater ©   (2008-03-25 19:05) [3]

else MyDWord := MyDWord and $FFFE;

Старшее слово потеряем.


 
Reindeer Moss Eater ©   (2008-03-25 19:08) [4]

хотя если чекбоксов два ....
но тогда и байта вместо дворда за глаза.....


 
Германн ©   (2008-03-25 19:12) [5]


> Reindeer Moss Eater ©   (25.03.08 19:05) [3]
>
> else MyDWord := MyDWord and $FFFE;
>
> Старшее слово потеряем.
>

Ага. Не обратил внимания на DWord.


 
Семеныч   (2008-03-25 19:13) [6]

Сохранение:
MyDWord := (Byte(CheckBox2.Checked) shl 1) or Byte(CheckBox1.Checked);

Чтение:
CheckBox1.Checked := (MyDWord and 1) <> 0;
CheckBox2.Checked := (MyDWord and 2) <> 0;


 
Семеныч   (2008-03-25 19:32) [7]

Вдогонку: [6] - это если можно менять другие биты. А если нельзя, то cохранять надо так:
MyDWord := MyWord and $FFFFFFFС or (DWord(CheckBox2.Checked) shl 1) or DWord(CheckBox1.Checked);


 
Anatoly Podgoretsky ©   (2008-03-25 21:46) [8]

> Reindeer Moss Eater  (25.03.2008 19:08:04)  [4]

Вообще то и байта очень много.


 
Anatoly Podgoretsky ©   (2008-03-25 21:48) [9]

> Германн  (25.03.2008 19:12:05)  [5]

Не потеряем, у него 30 бит не используются, по этому достаточно масок 1,2 и 2, 1 соответственно


 
Anatoly Podgoretsky ©   (2008-03-25 21:49) [10]

http://www.podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Delphi/Podgoretsky/bits.html&file_id=app-bits



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
3-1196229406
ROMQA
2007-11-28 08:56
2008.04.20
DELPHI SQL запрос в файл!


11-1187883874
Vladimir Kladov
2007-08-23 19:44
2008.04.20
Объявление: новый модуль DecimalCalculations


15-1204924214
Kostafey
2008-03-08 00:10
2008.04.20
С днем рождения ! 8 марта


15-1204883635
xayam
2008-03-07 12:53
2008.04.20
Фокус


2-1206494967
7inars
2008-03-26 04:29
2008.04.20
Скачивание html страницы.