Você está aqui: Delphi ::: Win32 API (Windows API) ::: Passos Iniciais |
|
O que são funções de Callback do Windows (Windows Callback Functions) e como usá-las em programas DelphiQuantidade de visualizações: 11179 vezes |
|
O Delphi é um dos ambientes mais amigáveis quando o assunto é chamar funções da API do Windows ou localizadas em DLLs. O problema é que, muitas vezes, as funções da API do Windows, tais como EnumFontFamilies, exigem que o programador forneça um ponteiro para um função. No caso de EnumFontFamilies, esta função será chamada para cada fonte encontrada e que pertença à família de fontes especificada. Veja sua assinatura na documentação da API do Windows:int EnumFontFamilies( HDC hdc, // handle to DC LPCTSTR lpszFamily, // font family...... Então, nós chamamos a função EnumFontFamilies() e esta, por sua vez, chama a função fornecida para o parâmetro lpEnumFontFamProc a cada fonte encontrada. É aqui que nossa discussão reside. O parâmetro lpEnumFontFamProc recebe um ponteiro para uma função definida pelo programador e tal função é chamada de função de Callback. Note que a maioria das funções de enumeração do Windows nos permitem fornecer dados adicionais por meio do parâmetro lParam. Além disso, nós somos os responsáveis pela criação da função de Callback no Delphi. Veja um trecho de código no qual listamos todas as fontes pertencentes a uma determinada família de fonte: // função de Callback usada para listar as fontes de // uma determinada família de fontes function EnumFontFamProc(var elf: TEnumLogFont; var ntm: TNewTextmetric; FontType: Integer; Memo: TMemo): Integer; stdcall; begin if FontType = TRUETYPE_FONTTYPE then memo.Lines.Add('Nome: ' + elf.elfFullName) else memo.Lines.Add('Nome: ' + elf.elfLogFont.lfFaceName); Result := 1; end;...... Estude este código atentamente e note como usamos o parâmetro lParam da função de Callback para passar a referência a um Memo. Esta técnica nos permite acessar elementos do formulário a partir da função de Callback. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
|
Link para compartilhar na Internet ou com seus amigos: | |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como concatenar strings em C usando a função strcat() - Aprenda a programar na linguagem CQuantidade de visualizações: 41628 vezes |
Concatenar strings é a operação de anexar uma string a outra. Em C, isso é feito com o auxílio da função strcat(), disponível no header string.h. Esta função recebe a string de destino, a string de origem, anexa a string de destino no final da string de origem e retorna um ponteiro para o resultado final. Veja um exemplo no qual usamos esta função para concatenar três strings:#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char frase1[100] = "Gosto"; strcat(frase1, " muito de "); ...... Veja que a string de destino deve ser declarada com um tamanho suficiente para acomodar as strings que serão anexadas a ela. Veja agora um exemplo que usa o ponteiro retornado pela função strcat() para inicializar um ponteiro do tipo char: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // declara e inicializa duas strings char frase1[100] = "Gosto muito de "; char frase2[15] = "programar em C"; ...... |
PHP ::: Dicas & Truques ::: Strings e Caracteres |
Como converter uma string para letras maiúsculas em PHP usando as funções strtoupper() e mb_strtoupper()Quantidade de visualizações: 16223 vezes |
As funções strtoupper() e mb_strtoupper() do PHP nos ajuda quando precisamos transformar uma string inteira para letras maiúsculas. Veja o seguinte exemplo:<?php // uma frase contendo letras minúsculas $frase = "PHP? Eu gosto de PHP"; echo "A frase é: " . $frase . "\n"; ...... Ao executar este código PHP nós teremos o seguinte resultado: A frase é: PHP? Eu gosto de PHP A frase em letras maiúsculas é: PHP? EU GOSTO DE PHP A função mb_strtoupper(), por sua vez, é usada quando a palavra, frase ou texto contém acentuações. Nas versões mais recentes do PHP, a função strtoupper() sozinha não consegue converter caracteres minúsculas com acentos para caracteres maiúsculas acentuados. Por isso, a função mb_strtoupper() é usada. Veja: <?php // uma frase contendo letras minúsculas $frase = "Java? Não gosto muito de Java não"; echo "A frase é: " . $frase . "\n"; // agora vamos transformá-la em letras ...... Ao executar este código PHP nós teremos o seguinte resultado: A frase é: Java? Não gosto muito de Java não Usando strtoupper(): JAVA? NãO GOSTO MUITO DE JAVA NãO Usando mb_strtoupper(): JAVA? NÃO GOSTO MUITO DE JAVA NÃO Veja que usei o valor "UTF-8" como segundo argumento para a função mb_strtoupper(). Se necessário você pode fornecer o valor "ISO-8859-1" também. |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico |
Exercício Resolvido de Python - Ler um número inteiro na faixa 0-999 e mostrar a soma de seus dígitos - Apostila de Python BásicoQuantidade de visualizações: 2453 vezes |
Pergunta/Tarefa: Escreva um programa Python que leia um inteiro na faixa 0-999 e mostre a soma de seus dígitos. Por exemplo, se o valor for 523, a soma de seus dígitos será 5 + 2 + 3 = 10. Lembre-se que você deverá usar apenas os operadores matemáticos e o operador de módulo (%). Seu programa deverá exibir a seguinte saída: Informe um valor de 0 até 999: 821 A soma dos dígitos é: 11 Veja a resolução comentada deste exercício usando Python console: # função principal do programa def main(): # vamos solicitar ao usuário que informe um valor inteiro # na faixa 0 a 999 (incluindo) valor = int(input("Informe um valor de 0 até 999: ")) # vamos verificar se o valor está na faixa permitida if(valor < 0 or valor > 999): print("Valor fora da faixa permitida") else: # vamos obter o terceiro dígito terceiro = valor % 10 # obtém os digitos restantes valor = valor // 10 ...... |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como escrever uma função is_numeric() em C que verifica se uma string contém apenas dígitos de 0 a 9Quantidade de visualizações: 9760 vezes |
Em algumas situações precisamos verificar se uma string contém apenas dígitos de 0 a 9, ou seja, é um valor numérico inteiro válido. Para isso podemos usar a função personalizada em C que mostro nesta dica. Veja que o segredo é passar todos os caracteres individualmente para a função isdigit(). Veja o código:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> // função personalizada que permite verificar se uma // string contém apenas dígitos de 0 a 9 int is_numeric(const char *str){ int res = 1; // passou no teste // vamos percorrer todos os caracteres da string // e testar se cada um é um dígito. Se não // for nós marcamos res como 0 e retornamos while(*str){ if(!isdigit(*str)){ res = 0; break; } // vamos passar para o próximo caractere str++; } ...... E, antes que perguntem como é possível verificar se a string contém um valor fracionário válido, a seguinte alteração pode ser feita: int is_numeric(const char *str){ int res = 1; // passou no teste // vamos percorrer todos os caracteres da string // e testar se cada um é um dígito ou uma vírgula. Se não // for nós marcamos res como 0 e retornamos ...... |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Python - Um método recursivo que recebe um valor inteiro e o exibe na ordem inversaQuantidade de visualizações: 671 vezes |
Pergunta/Tarefa: Escreva um método recursivo que recebe um valor inteiro (com qualquer quantidade de dígitos) e o exibe na ordem inversa. Se o método receber o valor 467, o valor inverso será 764. Seu método deverá possuir a seguinte assinatura: def exibirInverso(valor): # sua implementação aqui Sua saída deverá ser parecida com: Informe um valor inteiro: 932 O valor invertido é: 239 Veja a resolução comentada deste exercício usando Python console: # método recursivo que recebe um valor inteiro e o exibe na ordem # inversa def exibirInverso(valor): # a parada da recursividade é o valor igual a 0 if valor != 0: print(valor % 10, end ="") valor = valor // 10 exibirInverso(valor) # efetua uma nova chamada recursiva # método principal ...... |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
Quem Somos |
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
|
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..
|
Linguagens Mais Populares |
1º lugar: Java |