Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dónde se metió? (https://www.clubdelphi.com/foros/showthread.php?t=65291)

dtomeysoto 03-12-2009 13:21:05

Dónde se metió?
 
Hola amigos, estaba buscando un post que hice hace unas semanas atrás y no lo encuentro, he agotado todas las formas de búsqueda y no doy con el. Recuerdo que después que hice el post vi la respuesta en los trucos y ahora tampoco veo la respuesta.

No recuerdo exactamente el nombre que le puse al hilo pero trataba sobre manipular los bits de un campo tipo Bytes en una tabla Paradox.

Se que alguien me respondió y me puso algunas funciones para poner a 0 ó a 1 el bit deseado.

Podría alguien ayudarme a encontrar ese hilo.... gracias.

Ñuño Martínez 03-12-2009 13:49:35

Quizá encuentres una respuesta, que no una solución, en este otro hilo.

dtomeysoto 03-12-2009 14:47:56

Ahora entiendo algo que me sucedió tiempo atrás y a lo que no le encontré explicación sino hasta ahora.

Bueno el que puso no hace mucho una funciones para manipular los bits de un byte pudiera postearlas otra vez?

Gracias

duilioisola 03-12-2009 18:33:13

En booleano:
Código PHP:

and 1
and 0
and 0
and 

Código:

1 or 1 = 1
1 or 0 = 1
0 or 1 = 1
0 or 0 = 0

Dado un byte A (8 bits) y otro B, "A and B" resulta de realizar la función "and" con cada par de bits.
Dado un byte A (8 bits) y otro B, "A or B" resulta de realizar la función "or" con cada par de bits.

Si quieres encender un bit, puedes hacer un byte B, con solo el bit deseado en 1 y realizar "A and B":

Código:

A = 0101 0000
B = 0010 0100
    ---------
    0111 0000

Si quieres apagar un bit puedes realizar un byte B con todos los bits encendidos excepto el que quieres apagar:

Código:

A = 0101 0000
B = 1110 1111
    ---------
    0100 0000


duilioisola 03-12-2009 18:44:17

En Delphi

Código Delphi [-]
function EncenderBit (b, bit : byte) : byte;
var
   suma : byte;
begin
   case bit of
   1 : suma :=   1; // que es 0000 0001 en binario
   2 : suma :=   2; // que es 0000 0010 en binario
   3 : suma :=   4; // que es 0000 0100 en binario
   4 : suma :=   8; // que es 0000 1000 en binario
   5 : suma :=  16; // que es 0001 0000 en binario
   6 : suma :=  32; // que es 0010 0000 en binario
   7 : suma :=  64; // que es 0100 0000 en binario
   8 : suma := 128; // que es 1000 0000 en binario
   end;
   Result := b or suma;
end;

function ApagarBit (b, bit : byte) : byte;
var
   suma : byte;
begin
   case bit of
   1 : suma := 254; // que es 1111 1110 en binario
   2 : suma := 253; // que es 1111 1101 en binario
   3 : suma := 251; // que es 1111 1011 en binario
   4 : suma := 247; // que es 1111 0111 en binario
   5 : suma := 239; // que es 1110 1111 en binario
   6 : suma := 223; // que es 1101 1111 en binario
   7 : suma := 191; // que es 1011 1111 en binario
   8 : suma := 127; // que es 0111 1111 en binario
   end;
   Result := b and suma;
end;

bosster_018 04-12-2009 17:10:39

¿?
 
¿Y crees que a tí te fué peor?

Con decirles que hasta mi cuenta desapareció despues del pequeño problema que tuvo el clubDelphi :eek:
Por suerte no había posteado mucho así que no me costó crear de nuevo mi cuenta :p


La franja horaria es GMT +2. Ahora son las 13:33:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi