-
QAT (25.03.08 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 © (25.03.08 19:02) [1]Примерно так:
if cb1.Checked then MyDword := (MyDword or 1) else (MyDword := MyDword and $FFFFFFFE);
cb1.Checked := (MyDWORD and 1) = 1; -
Германн © (25.03.08 19:03) [2]if CheckBox1.Checked then MyDWord := MyDWord or $0001
else MyDWord := MyDWord and $FFFE; -
Reindeer Moss Eater © (25.03.08 19:05) [3]else MyDWord := MyDWord and $FFFE;
Старшее слово потеряем. -
Reindeer Moss Eater © (25.03.08 19:08) [4]хотя если чекбоксов два ....
но тогда и байта вместо дворда за глаза..... -
Германн © (25.03.08 19:12) [5]
> Reindeer Moss Eater © (25.03.08 19:05) [3]
>
> else MyDWord := MyDWord and $FFFE;
>
> Старшее слово потеряем.
>
Ага. Не обратил внимания на DWord. -
Семеныч (25.03.08 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;