Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Внизпо структуре LVITEM Найти похожие ветки
← →
tippa (2010-03-07 10:35) [0]
lvitem: TLVItem;
что значитlvitem.state:=0;
lvitem.statemask:=0
в чем отличие этих полей?
почему пишем "or" а не "and", если надо и то и другое заполнять?lvitem.mask:=LVIF_STATE or LVIF_TEXT
будут ли заполнены поляlvitem.state:=0;
lvitem.statemask:=0
еслиlvitem.mask:=LVIF_TEXT
← →
MBo © (2010-03-07 13:21) [1]>в чем отличие этих полей?
statemask показывает, какие поля в state будут приниматься во внимание, а какие игнорироваться
>почему пишем "or" а не "and", если надо и то и другое заполнять?
потому что нужно разобраться, что означают эти операции
← →
0x00FF00 (2010-03-07 13:30) [2]StateMask — это список полей, на которые система вообще должна будет обращать внимание.
Ну а Mask — это сопстно текущий набор полей.
про OR и AND:
скорее всего, Вы не понимаете логики работы битовых масок.
вот смотрите.
есть у нас восьмибитная беззнаковая переменная mask (в Делфях — тип byte):mask: 0000 0000
и есть две константы LVIF_TEST1 и LVIF_TEST2:LVIF_TEST1 = 0000 0100
LVIF_TEST1 = 0001 0000
Эти константы — так называемые битовые маски.
Они способны включать в переменной mask нужные биты, отвечающие, по логике программы, за то или иное действие.
Допустим, что третий бит отвечает за некое действие TEST1, а пятый — за TEST2.
Что нужно сделать, чтобы в маске проставить способность и на TEST1, и на TEST2?
Ответ: получить в переменной mask значение 0001 0100.
Именно поэтому нам нужен OR.
Если использовать AND, то, в полном согласии с таблицей истинности этой функции, переменная mask просто занулится.
ps. эх, опоздал =)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.059 c