Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

Работа с байтом и битами   Найти похожие ветки 

 
stanislav ©   (2007-09-18 16:55) [0]

Получаю от устройства 1 байт данных, представленный в формате Integer. т.е. значение от 0 до 255, этим значением прибор информирует какие из 8 контактов замкнуты т.е. приняли значение 1.
Мне нужно узнать допустим замкнут ли контакт под номером 5, для этого я преобразовую число в строку вида "11101111", и потом с помощю строковых функций(COPY)  получаю 0 либо 1.
Есть ли проще способ это определить?


 
DVM ©   (2007-09-18 16:57) [1]


> Есть ли проще способ это определить?

AND OR SHL SHR и прочие битовые операции


 
Сергей М. ©   (2007-09-18 16:58) [2]


> D7


> Integer. т.е. значение от 0 до 255


Читаем справку:

Generic integer types for 32-bit implementations of Delphi  
Type Range Format
Integer -2147483648..2147483647 signed 32-bit
Cardinal 0..4294967295 unsigned 32-bit


 
Германн ©   (2007-09-18 16:59) [3]


> Работа с байтом и битами

http://podgoretsky.com/ftp/Docs/Delphi/Podgoretsky/bits.html


 
DVM ©   (2007-09-18 17:01) [4]

на пальцах:

procedure TForm1.Button2Click(Sender: TObject);
var
n: integer;
begin
n := 239; //11101111
if (n and 16{10000}) <> 0  then windows.Beep(500,50); // не пищит
n := 255; //11111111
if (n and 16{10000}) <> 0  then windows.Beep(500,50); // пищит!
end;


 
Сергей М. ©   (2007-09-18 17:02) [5]


> Есть ли проще способ это определить?
>


Есть. И не один. И не только проще, но и наглядней и эффективней.

см. множества (sets) в Делфи.


 
stanislav ©   (2007-09-18 17:05) [6]

Спасибо, читаю.


 
stanislav ©   (2007-09-18 17:14) [7]

Все, понял. А вот как бы теперь это на MSSQL написать?


 
Shirson ©   (2007-09-18 17:38) [8]

Вы входящие с прибора на MSSQL хотите обрабатывать? О, мсье понимает толк в извращениях! :)


 
sniknik ©   (2007-09-18 19:48) [9]

тем не менее в MSSQL есть битовые операции... целесообразности в их использовании чаще всего нет, а операции есть...

после [3] читать BOL...


 
Anatoly Podgoretsky ©   (2007-09-18 20:16) [10]

> sniknik  (18.09.2007 19:48:09)  [9]

Чего только нет в этом королевстве.
Очень богатое королевство.


 
stanislav ©   (2007-09-19 10:06) [11]

Shirson ©   (18.09.07 17:38) [8]
Данные собирает сервер и пишет в базу, и в задачи сервера входит только записать целое число в базу. А результаты обрабатываются aspx страницей.
Чтобы не выполнять кучу запросов к базе проще битовые операции выполнить силами MSSQL.


 
stanislav ©   (2007-09-19 10:06) [12]

sniknik ©   (18.09.07 19:48) [9]
Спасибо почитаю.


 
sniknik ©   (2007-09-19 11:00) [13]

stanislav ©   (19.09.07 10:06) [11]
ну возможно в данном случае и есть целесообразность... сразу бы объяснил для чего нужно не было бы [8] (а то могло с этого все на треп скатится).

> Спасибо почитаю.
поточнее см. раздел bitwise operators и связанное (по ссылкам внизу).


 
stanislav ©   (2007-09-19 11:06) [14]

sniknik ©   (19.09.07 11:00) [13]

спасибо прочитал все понял. подошло. (Русский BOL по MSSQL рулит :-).)
Я думал это делается процедурами/функциями, хотел посмотреть и по возможности реализовать на MSSQL, оказалось все проще :-).


 
Anatoly Podgoretsky ©   (2007-09-19 11:10) [15]

Может стоить использовать тип bit



Страницы: 1 вся ветка

Текущий архив: 2007.10.14;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
15-1189596497
FreeTT
2007-09-12 15:28
2007.10.14
Добавление группы в TRZBarGroup


2-1189625872
aids
2007-09-12 23:37
2007.10.14
матрица


2-1190027016
DevilDevil
2007-09-17 15:03
2007.10.14
Открыто ли модальное окно?


15-1190031053
boa_kaa
2007-09-17 16:10
2007.10.14
И это задача для детсткого сада!


3-1181367762
Dmitry_177
2007-06-09 09:42
2007.10.14
какую лучше использовать базу для локального использования?