Главная страница
    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-1206196743
San1
2008-03-22 17:39
2008.04.20
перекрытие Create


15-1204470388
sniknik
2008-03-02 18:06
2008.04.20
Классная картинка!


2-1206598873
zdm
2008-03-27 09:21
2008.04.20
Отслеживание исполнения


2-1206555175
junkie
2008-03-26 21:12
2008.04.20
Excel процесс остается в памяти


2-1206508766
@!!ex
2008-03-26 08:19
2008.04.20
Определить, что текущая раскладка Ru или не Ru





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