Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.047 c
4-1176143482
pit94
2007-04-09 22:31
2007.10.14
Как определить перемен.окружения?


11-1173541324
Dmitriy___
2007-03-10 18:42
2007.10.14
kolcryptolib: ошибка при установке


2-1190398346
vadimi4
2007-09-21 22:12
2007.10.14
ADO и SQL Server 2000


2-1190098194
artem779
2007-09-18 10:49
2007.10.14
проблема с *.INI


15-1190055923
AntiUser
2007-09-17 23:05
2007.10.14
Разработан принцип воспламенения океанов





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