Форум: "Начинающим";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];
ВнизБитовые флаги Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c