0 Members and 1 Guest are viewing this topic.
Как в переменоой типа byte изменить значение какого-либо бита?
{ **** UBPFD *********** by delphibase.endimus.com ****>> Установка определенного бита в словеВозвращает AWord с установленным битом номер ABit (c 0 по 15) в значение 1,если AState = TRUE или 0, если AState = FALSE.Стоит заметить, что в функцию передается именно номер бита, а не маска.Проверка на правильный номер не производится.Зависимости: SystemАвтор: Григорий Ситнин, gregor@gregor.ru, МоскваCopyright: Григорий Ситнин, 2003Дата: 8 июля 2003 г.***************************************************** }function SetBit(AWord: word; ABit: byte; AState: boolean = true): word;begin if AState then Result := AWord or (1 shl ABit) else Result := AWord and (not (1 shl ABit));end;Пример использования: {$APPTYPE CONSOLE}program test;uses Bits; // В модуле Bits описана функция SetBitvar z: word; i: integer; s: string;begin z := 0; z := setbit(z, 0); // 0000000000000001 z := setbit(z, 2); // 0000000000000101 z := setbit(z, 9); // 0000001000000101 z := setbit(z, 14); // 0100001000000101 z := setbit(z, 15); // 1100001000000101 s := ''; for i := 15 downto 0 do s := s + inttostr(Ord(CheckBit(z, i))); writeln('value: ', z, ' dec = 1100001000000101'); writeln('result: ', s); z := $FFFF; z := setbit(z, 0, false); // 1111111111111110 z := setbit(z, 2, false); // 1111111111111010 z := setbit(z, 9, false); // 1111110111111010 z := setbit(z, 14, false); // 1011110111111010 z := setbit(z, 15, false); // 0011110111111010 s := ''; for i := 15 downto 0 do s := s + inttostr(Ord(CheckBit(z, i))); writeln('value: ', z, ' dec = 0011110111111010'); writeln('result: ', s);end.
Вот девайс в работеhttp://www.youtube.com/watch?v=NC6thVzJ4QQ
Вопорс: Будет ли интересна тема про внешние устройства визуализации?Всякие там светомузыки под управлением AIMP
Вживую еще круче. Камера искажает цвет очень сильно. Плюс еще пережато всякими мпегами.