Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dividir Word en 2 Byte (https://www.clubdelphi.com/foros/showthread.php?t=65825)

dtomeysoto 15-01-2010 15:19:54

Dividir Word en 2 Byte
 
Amigos del club, necesito coger de una variable de tipo word los 8 primeros bits y guardarlos en una variable de tipo Byte y hacer lo mismo pero en otra variable con los restantes 8 bits.

Podria alguien darme una ayudita, Graciassss

Al González 15-01-2010 15:24:45

Hola.

Existen un par de funciones para ese propósito, llamadas Lo (byte bajo) y Hi (byte alto).

Código Delphi [-]
B := Lo (W);

Saludos.

Al González.

delphi.com.ar 15-01-2010 17:34:20

Sin dudas lo que te propone Al Gonzalez, es la solución mas habitual. Sucede que muchas veces dentro de una función hay muchas referencias a cada byte de un valor y no desees estar llamando a funciones como Hi/LoByte y MakeWord para armar el resultado, o te encuentres con algún tipo de datos mas difícil de descomponer. En este caso hay otras opciones muy prácticas que ofrece el lenguaje:

Podes crear dos variables que residan en el mismo espacio de memoria mediante la directiva absolute:
Código Delphi [-]
var
  W: Word;
  B: array[0..1] of byte absolute W;
begin
  B[0] := 255;
  B[1] := 0;

  WriteLn(W);

Otra opción, es usar registros con partes variables:
Código Delphi [-]
type
  TMyWord = record
    case Integer of
      1: (Value: Word);
      2: (LoByte: Byte;
          HiByte: Byte;)
  end;

var
  W: TMyWord;
begin
  W.LoByte := 255;
  W.HiByte := 0;
  WriteLn(W.Value);

Espero no confundir!..
Saludos!


La franja horaria es GMT +2. Ahora son las 10:15:36.

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