![]() |
|
||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
Você está aqui: Delphi ::: Win32 API (Windows API) ::: Tipos de Dados |
Como formar um WORD a partir de dois BYTEQuantidade de visualizações: 12057 vezes |
O tipo de dados BYTE da API do Windows é um tipo integral de 8 bits sem sinal (com valor mínimo de 0 e máximo de 255) enquanto o tipo WORD é um tipo integral de 16 bits também sem sinal (com o valor mínimo de 0 e o máximo de 65.535). Isso nos mostra que um WORD é o dobro de um BYTE. Em algumas ocasiões pode ser necessário guardar em um WORD o valor de dois BYTE, talvez com o propósito de separá-los em um determinado momento (em minhas dicas nesta mesma seção você verá como isso pode ser feito). Dois BYTE podem ser agrupados em um WORD usando a macro MAKEWORD da API do Windows. Comece analisando os seguintes valores: Valor 1: 80 Valor 2: 120 Estes dois valores podem ser representados em binário da seguinte forma: Valor 1: 01010000 Valor 2: 01111000 Ao combinarmos estes dois bytes em um WORD, o primeiro valor será o byte de ordem alta (mais significativo) e o segundo valor será o byte de ordem baixa (menos significativo). E o resultado será dois bytes: Valor final: 01010000 01111000 Transformando este valor binário em decimal nós temos 20600. Vamos ver isso em Delphi? Analise cuidadosamente o trecho de código abaixo: procedure TForm3.Button2Click(Sender: TObject); var resultado: WORD; ordem_alta, ordem_baixa: BYTE; begin // byte mais significativo ordem_alta := 80; // byte menos significativo ordem_baixa := 120; // vamos juntar os dois valores em um WORD resultado := MAKEWORD(ordem_baixa, ordem_alta); // vamos exibir o resultado Memo1.Lines.Add('O valor WORD resultante é: ' + IntToStr(resultado)); end; Ao executar este código teremos o seguinte resultado: O valor WORD resultante é: 20600 Note que a macro MAKEWORD pede primeiro o byte de ordem baixa e então o byte de ordem alta. O Delphi também nos oferece uma função MakeWord() que recebe dois bytes (na mesma ordem que MAKEWORD) e retorna um Word. Veja sua definição na unit Windows.pas: function MakeWord(A, B: Byte): Word; begin Result := A or B shl 8; end; O entendimento desta função é bem simples. Suponhamos que temos os seguintes bytes: a: 01010000 (ordem alta) b: 01111000 (ordem baixa) O operador shl move (shift) o byte de ordem alta 8 bits para a esquerda, resultando em 01010000 00000000. Em seguida aplicamos o operador or (que torna um bit 0 somente quando os dois bits dos valores comparados são 0). Veja: 00000000 01111000 (ordem baixa) 01010000 00000000 (ordem alta - depois de aplicado o operador shl) ----------------- 01010000 01111000 Convertendo 01010000 01111000 para decimal nós temos 20600. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |