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

Вниз

Определение состояния бита   Найти похожие ветки 

 
Eagle Owl   (2003-10-11 17:41) [0]

Добрый вечер!
Вопрос такой: допустим, имеется целочисленная переменная (Byte, Integer и т.п.). Есть ли в Delphi или WinAPI функция для определения состояния отдельно взятого бита из значения этой переменной?


 
MBo   (2003-10-11 17:44) [1]

С помощью and и shl


 
chupacabra   (2003-10-11 18:29) [2]

Все очень просто:

function BitState(const A, Bit: DWORD): Boolean;
begin
BitState:=(A and Bit = Bit);
end;

Значение Bit - соответственно:
0 бит - 1
1 бит - 2
2 бит - 4
3 бит - 8
4 бит - догадайся сам...


 
WithOut Any ...   (2003-10-11 18:33) [3]

var
i1,i2,i3:integer;
s1,s2,s3:string;
us1:boolean;

function DecHex(integ:integer):string;
begin
i1:=integ;
i2:=i1;
Repeat
if (i1 div 2) = 0 then us1:=true;
i2:=i1; i2:=i2 mod 2;
i1:=i1 div 2;
s1:=IntToStr(i2)+s1;
until us1=true;
DecHex:=s1;
end;


 
Eagle Owl   (2003-10-11 18:45) [4]

Спасибо за ответы! Так а в Delphi или WinAPI функций подобных нет?
Я же потому так и спрашивал, чтобы не писать самому, если уже есть, а то это бы получилось как повторное изобретение велосипеда...


 
chupacabra   (2003-10-11 18:50) [5]


> WithOut Any ... ©

Ха! Ха! Такая ф-ция в текстовых строках энто КРУТО!!! Но тока ЩИТАТЬ ана будет ДЮЖЕ ДОВГО!!!
ТЫ бы ещё компонент такой написал... или dll-ку :)))


 
Nikolay M.   (2003-10-11 19:02) [6]


> WithOut Any ... © (11.10.03 18:33)

Да уж, намутил :))
А если примерно так (не проверял, но смысл очевиден):

function IsBitSet (N : integer; BitPos : byte) : boolean;
begin
Result := (BitPos < 8 * sizeof(N)) and (N and (1 shl BitPos) <> 0);
end;

соответственно BitPos - номер проверяемого бита от 0 до 255.


 
Anatoly Podgoretsky   (2003-10-11 19:06) [7]

http://podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Delphi/Podgoretsky/bits.html&file_i d=app-bits



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

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

Наверх




Память: 0.45 MB
Время: 0.009 c
3-74074
dgs
2003-10-01 17:54
2003.10.23
Использование в DLL соединения из вызывающего приложения


8-74328
Александр Маленький
2003-06-21 14:24
2003.10.23
MP3


1-74125
From_X
2003-10-10 17:12
2003.10.23
Web Browser Navigate Method return when Document is Complete


14-74432
Aragon
2003-10-05 07:13
2003.10.23
WinAPI


7-74515
Шустрый
2003-08-11 12:22
2003.10.23
Как получить текст из TEdit не моего приложения?





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