Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
11-1188137808
Jimmy Lee
2007-08-26 18:16
2008.04.20
почему размер DemoEmpty у меня больше, чем в примере?


2-1206351217
webSQLNeederr
2008-03-24 12:33
2008.04.20
Помогите понять почему Random работает всегда постоянно одинаков?


2-1206529642
Renat
2008-03-26 14:07
2008.04.20
Как построить диаграмму на основе данных из БД?


2-1206330334
Xmen
2008-03-24 06:45
2008.04.20
Запрос по соединению данных.


2-1206415904
Santon26
2008-03-25 06:31
2008.04.20
Работа с XML файлом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский