Битовая маска в условии
if (([DialogForm.QueryRoom."add_true"] AND 262144)<>0) then
dot:='•'
В этом примере получается, что проверяется правая и левая часть как логическое условие, а не как накладывание маски, то есть если [DialogForm.QueryRoom."add_true"] отлично от нуля, то я всегда получу true, а нужный бит так и не проверится. Как лечить? И лечится ли вообще?
dot:='•'
В этом примере получается, что проверяется правая и левая часть как логическое условие, а не как накладывание маски, то есть если [DialogForm.QueryRoom."add_true"] отлично от нуля, то я всегда получу true, а нужный бит так и не проверится. Как лечить? И лечится ли вообще?
Комментарии
begin
a := 12;
b := 'no';
if (a and 8) <> 0 then
b := 'yes';
end
У меня 2.47. Кстати, может подскажешь почему такая хрень получается:
Писал программу, много написал и тут горит винт. Восстанавливаю с бекапа, компилирую и мне выдает 3 ошибки на линковке:
[Linker Error] Unresolved external '_FormReport' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT\OURCITY\MAIN.OBJ
[Linker Error] Unresolved external '_ShowDate' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT\OURCITY\MAIN.OBJ
[Linker Error] Unresolved external 'TFormReport::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT\OURCITY\OURCITY.OBJ
Версия стояла тоже 2.47, в общем выдает ошибки на extern переменные, не линкуются. Я уже и билдер переустановил, и фастрепорт - не хочет линковаться. Думал, ну может бэкап закосяченный, поднял еще более старые - те тоже не компилятся, точнее компилятся, но не линкуются, причем именно на форме, где фастрепорт лежит. Все пути прописаны как в путях проекта, так и в путях окружения.