| Você está aqui: Delphi ::: Win32 API (Windows API) ::: Tipos de Dados | 
| Como formar um WORD a partir de dois BYTEQuantidade de visualizações: 12112 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
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: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- 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: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- 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. | 
|  Link para compartilhar na Internet ou com seus amigos: | 
| Desafios, Exercícios e Algoritmos Resolvidos de Delphi | 
| Veja mais Dicas e truques de Delphi | 
| Dicas e truques de outras linguagens | 
| Java - Java Swing Avançado - Como exibir imagens nas células de uma JTable em suas aplicações Java Swing | 
| E-Books em PDF | ||||
| 
 | ||||
| 
 | ||||
| Linguagens Mais Populares | ||||
| 
			   1º lugar: Java | 


 
 





