Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
2-1206641618
AlexDan
2008-03-27 21:13
2008.04.20
Подскажите как строку превратить в массив?


2-1206038360
Nicky000
2008-03-20 21:39
2008.04.20
SQL


2-1206386451
unknowing
2008-03-24 22:20
2008.04.20
Дескриптор Com-порта


3-1196257580
Vlad
2007-11-28 16:46
2008.04.20
Формат даты


2-1206704256
asdf2
2008-03-28 14:37
2008.04.20
Как вставить Blob-поле(текстовое) в InterBase?




   Наверх