Главная страница
    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.047 c
2-1206286250
GHT
2008-03-23 18:30
2008.04.20
Условие в SQL запросе: or <--> and


15-1204806848
vajo
2008-03-06 15:34
2008.04.20
Кто-нибудь пользовался Nokia 6120?


15-1204623305
Lola
2008-03-04 12:35
2008.04.20
Как юзер "случайно" мог переформатировать флешку?


6-1185300202
malyar
2007-07-24 22:03
2008.04.20
как получить все строки принятые idtcpclient(ом)


11-1187959648
misha_shar
2007-08-24 16:47
2008.04.20
Календари





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский