![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проверять установлен флаг или нет [D2005, XP]
alex-drob © (2008-06-06 01:38:00)Есть такие констаны, флаги:
MESSAGE_FLAG_OFFLINE = $00000001;
MESSAGE_FLAG_NORECV = $00000004;
MESSAGE_FLAG_AUTHORIZE = $00000008;
MESSAGE_FLAG_SYSTEM = $00000040;
MESSAGE_FLAG_RTF = $00000080;
MESSAGE_FLAG_CONTACT = $00000200;
MESSAGE_FLAG_NOTIFY = $00000400;
MESSAGE_FLAG_MULTICAST = $00001000;
MAX_MULTICAST_RECIPIENTS = 50;
MESSAGE_USERFLAGS_MASK = $000036A8;
MRIM_CS_MESSAGE_ACK = $1009;
и есть переменная flag:dword; в которой установленны какието из флагов. как проверить какие?
Если бы он мог быть один то можно былобы просто проверять
case flag of
MESSAGE_FLAG_NORECV: ...
....
а если сразу несколько флагов?
alex-drob (2008-06-06 02:33:00) [1]спасибо ещё раз!
Reindeer Moss Eater (2008-06-06 02:29:00) [2]if (mList.Flag and MESSAGE_FLAG_NOTIFY) = MESSAGE_FLAG_NOTIFY then
alex-drob (2008-06-06 02:28:00) [3]if (mList.Flag and MESSAGE_FLAG_NOTIFY)=MESSAGE_FLAG_NOTIFY then
то есть так?
спасибо большое всем за помощь!
Германн (2008-06-06 02:25:00) [4]
> alex-drob © (06.06.08 02:19) [7]
>
> да я ему верю! а как мне теперь из интегера булеан получить?
> ну или как по другому проверить установлены флаги или нет?
>
>
http://www.delphikingdom.com/lyceum/seminar.asp?ID=2
alex-drob (2008-06-06 02:19:00) [5]да я ему верю! а как мне теперь из интегера булеан получить? ну или как по другому проверить установлены флаги или нет?
Германн (2008-06-06 02:14:00) [6]
> Reindeer Moss Eater © (06.06.08 02:11) [4]
>
> А ты верь ему. Должен быть булеан. А у тебя integer
>
И слава Борланду.
Германн (2008-06-06 02:12:00) [7]
> то обе проверки
> if flag and MESSAGE_FLAG_OFFLINE then....
> if flag and MESSAGE_FLAG_RTF then....вернут выполнят действия
> после then?
>
Ни разу не пробовал, ну думая что вернут. Но это либо дурной вкус, либо полное непонимание.
Reindeer Moss Eater (2008-06-06 02:11:00) [8]А ты верь ему. Должен быть булеан. А у тебя integer
alex-drob (2008-06-06 02:04:00) [9]
if mList.Flag and MESSAGE_FLAG_NOTIFY then
пишет ошибку
[Error] main.pas(144): E2012 Type of expression must be BOOLEAN
alex-drob (2008-06-06 01:57:00) [10]т.е. если например два флага установленны, ну предположем
MESSAGE_FLAG_OFFLINE = $00000001;
MESSAGE_FLAG_RTF = $00000080;
и у меня есть переменнаяflag=$0081
то обе проверки
if flag and MESSAGE_FLAG_OFFLINE then....вернут выполнят действия после then?
if flag and MESSAGE_FLAG_RTF then....
Amoeba (2008-06-06 01:45:00) [11]Только для одного флага:
flag and MESSAGE_FLAG_OFFLINE
Для нескольких:
flag and (MESSAGE_FLAG_OFFLINE or MESSAGE_FLAG_NORECV or MESSAGE_FLAG_RTF)