![]() |
|
||||
![]() Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Você está aqui: Delphi ::: Win32 API (Windows API) ::: Tipos de Dados |
||||||||||||
Como formar um WORD a partir de dois BYTEQuantidade de visualizações: 11949 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:
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:
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:
Convertendo 01010000 01111000 para decimal nós temos 20600. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
||||||||||||
![]() |
||||||||||||
Delphi ::: Dicas & Truques ::: Recursão (Recursividade) |
||||
Como escrever uma função recursiva para calcular a potência de um número em DelphiQuantidade de visualizações: 13687 vezes |
||||
O código abaixo mostra como você pode escrever uma função recursiva em Delphi que permite calcular a potência de um número inteiro:
Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. | ||||
Delphi ::: VCL - Visual Component Library ::: TListBox |
||||
Como pesquisar e selecionar um item em uma ListBox do DelphiQuantidade de visualizações: 16681 vezes |
||||
O trecho de código abaixo mostra como podemos usar a mensagem LB_SELECTSTRING da Windows API para pesquisar e selecionar um item em uma ListBox. Veja que aqui eu usei a função InputBox() para permitir ao usuário inserir o texto a ser pesquisado. Note também o valor -1 fornecido como wParam para a função SendMessage(). Este valor faz com que a busca se inicie no primeiro item da lista e continue até o final da lista. Veja o código:
Note que a busca efetuada por LB_SELECTSTRING não é sensitiva a maiúsculas e minúsculas. Assim, Osmar e OSMAR são tratadas igualmente. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. | ||||
Delphi ::: VCL - Visual Component Library ::: TListBox |
||||||||||||||||
Como usar a propriedade Items da classe TListBox do DelphiQuantidade de visualizações: 11362 vezes |
||||||||||||||||
A propriedade Items da classe TListBox representa um objeto da classe TStrings, a classe base para objetos que representam uma lista de strings. Isso quer dizer que podemos acessar a propriedade Items e usar todos os métodos e propriedades da classe TStrings, tais como Add(), Clear(), Delete(), Exchange(), etc. Veja, por exemplo, como usar o método Add() para adicionar um novo item na ListBox:
É possível obter um referência à propriedade Items para manipular os itens da ListBox indiretamente. Veja:
Esta técnica é útil quando queremos inserir itens em uma TListBox a partir de uma função ou procedure. Veja:
Para finalizar, veja como escrever uma função personalizada que constrói e retorna uma lista de strings. Note como usamos o objeto TStrings retornado para preencher a ListBox:
Observe que, embora o retorno seja TStrings, no corpo da função nós construímos um objeto da classe TStringList. Isso acontece porque TStrings é uma classe abstrata e, portanto, não podemos chamar seu construtor. Como TStringList herda de TStrings e é uma classe concreta, esta é a escolha mais óbvia. 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 |
C# - Como remover um elemento em uma determinada posição de uma List<T> do C# usando a função RemoveAt() |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |