Você está aqui: Delphi ::: Dicas & Truques ::: Bilbiotecas Estáticas (obj) e Dinâmicas (DLLs) |
Como carregar uma DLL a partir de seus programas Delphi usando Static Loading (carregamento estático)Quantidade de visualizações: 13408 vezes |
Por carregamento estático (Static Loading) entendemos a técnica de se carregar as funções de uma DLL na abertura de nossos programas, ou seja, a DLL é carregada juntamente com nossa aplicação. Para esta demonstração faremos uso da DLL MinhaDLL.dll, criada em uma das dicas nesta mesma seção. O primeiro passo é saber a assinatura da função contida na DLL e que pretendemos usar em nosso programa Delphi. A DLL MinhaDLL.dll contém uma função Somar() que recebe dois Integer e retorna a soma como um Integer: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- function Somar(a, b: Integer): Integer; stdcall; begin Result := a + b; // retorna a soma end; O primeiro passo é criar uma unit que nos permitirá informar ao compilador Delphi que a rotina Somar() está localizada externamente. Para isso, crie um novo projeto e adicione uma nova unit com o seguinte conteúdo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- unit MinhaDLL; interface function Somar(a, b: Integer): Integer; stdcall; implementation // vamos informar ao compilador que a função Somar() está // localizada externamente e em qual DLL function Somar(a, b: Integer): Integer; external 'MinhaDLL.dll'; end. Agora só precisamos adicionar esta unit no formulário a partir do qual pretendemos chamar a função localizada na DLL: uses MinhaDLL; E, para chamar a função Somar() só precisamos adicionar o código abaixo no evento Click de um botão: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button1Click(Sender: TObject); var v1, v2, resultado: Integer; begin v1 := 5; v2 := 2; resultado := Somar(v1, v2); // vamos exibir o resultado ShowMessage('A soma é: ' + IntToStr(resultado)); end; Note que, no carregamento estático, se a DLL não puder ser encontrada você verá uma caixa de mensagem semelhante à: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Projet2.exe - Não foi possível localizar componente Este aplicativo não pôde ser iniciado porque não foi encontrado MinhaD.dll. A reinstalação do aplicação pode corrigir o problema. Mas, esta mensagem de erro só é exibida se executarmos a aplicação fora da IDE do Delphi (experimento feito com Delphi 2009). Lembre-se de que o os aplicativos procuram as DLLs primeiro no diretório local e em seguida nos diretórios Windows, System e System32. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Link para compartilhar na Internet ou com seus amigos: |
Delphi ::: Dicas & Truques ::: Strings e Caracteres |
Como usar a função ReverseString() do Delphi para inverter o texto de uma palavra ou frase em Delphi - Invertendo o conteúdo de uma string usando DelphiQuantidade de visualizações: 25706 vezes |
Em algumas situações precisamos inverter o conteúdo de uma string, ou seja, alterar a ordem de seus caracteres de forma que a string fique de trás para frente. Em Delphi isso pode ser feito com o auxílio da função ReverseString(). Esta função recebe uma string e devolve outra string invertida. Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var nome: string; // declara uma variável do tipo string begin nome := 'Osmar J. Silva'; // vamos inverter o conteúdo da string nome := ReverseString(nome); // vamos exibir o resultado ShowMessage(nome); end; Não se esqueça de adicionar a unit StrUtils na cláusula uses de seu formulário. Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Dicas & Truques ::: Data e Hora |
Delphi para iniciantes - Como criar uma data e hora em Delphi usando a função EncodeDateTime()Quantidade de visualizações: 20416 vezes |
Em algumas situações precisamos contruir uma determinada data e hora e retornar um TDateTime. Isso pode ser feito com o auxílio da função EncodeDateTime(). Esta função requer valores inteiros representando o ano, mês, dia, horas, minutos, segundos e milisegundos. Veja um exemplo no qual construímos a data 22/10/2009: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var data_hora: TDateTime; begin // não esqueça de incluir DateUtils no uses // vamos construir a data 22/10/2009 data_hora := EncodeDateTime(2009, 10, 22, 0, 0, 0, 0); // vamos exibir o resultado ShowMessage('A data é: ' + DateTimeToStr(data_hora)); end; Note que deixamos os valores de horas, minutos, segundos e milisegundos como 0. Experimente construir a mesma data fornecendo também os valores de horas, minutos, segundos e milisegundos. Há, contudo, alguns cuidados a serem tomados. Os valores fornecidos para a função EncodeDateTime() devem obedecer as regras de limites mínimos e máximos: a) O valor do ano deve estar entre 1 e 9999; b) Os valores de meses devem estar entre 1 e 12 (incluindo); c) Os valores válidos para os dias variam de 1 até 28, 29, 30 ou 31, dependendo do valor do mês. Por exemplo, os valores possíveis para o mês 2 (fevereiro) são de 1 até 28 ou até 29, dependendo ou não se o valor do ano especificado for um ano bissexto; d) Valores para a hora devem estar entre 0 e 24. Se a hora for definida como 24, os valores dos minutos, segundos e milisegundos deverão ser 0, e o TDateTime resultante representará a meia-noite no final do dia especificado e o início do próximo dia; d) Os valores dos minutos devem variar de 0 até 59; e) Os valores de segundos devem variar de 0 até 59; f) Os valores de milisegundos devem variar de 0 até 999. Se os valores informados para a função EncodeDateTime() estiverem fora destas faixas, uma exceção EConvertError será lançada. Esta exceção ocorrerá em tempo de execução. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como usar a propriedade PickList para definir ou obter a lista de escolhas para uma determinada coluna do TDBGrid do DelphiQuantidade de visualizações: 11529 vezes |
A propriedade PickList, do tipo TStrings, é usada quando queremos fornecer uma lista de itens da qual um poderá ser escolhido como conteúdo da célula pertencente a uma determinada coluna. Em tempo de design podemos definir os itens da lista clicando no DBGrid e escolhendo a opção Columns Editor. Em seguida escolha a coluna desejada e dê duplo-clique na propriedade PickList. Imediatamente o String List Editor será exibido. Neste editor podemos inserir os itens, cada um em sua linha. Em tempo de execução a lista de itens será exibida quando a célula estiver em edição. Note que, isso só acontecerá se o valor cbsAuto estiver definido para a propriedade ButtonStyle da coluna. Em tempo de execução podemos adicionar itens na propriedade PickList usando o seguinte trecho de código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button3Click(Sender: TObject); begin // vamos adicionar um novo item na PickList da primeira coluna DBGrid1.Columns[0].PickList.Add('40'); end; Veja agora um trecho de código no qual acessamos a propriedade PickList da coluna e exibimos seu conteúdo em um TMemo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button3Click(Sender: TObject); var i: Integer; begin // vamos adicionar o conteúdo da PickList da primeira coluna // a um TMemo for i := 0 to DBGrid1.Columns[0].PickList.Count - 1 do begin Memo1.Lines.Add(DBGrid1.Columns[0].PickList[i]); end; end; Como a propriedade PickList da classe TColumn é do tipo TStrings, podemos efetuar várias operações na lista de itens, tais como, adicionar novos itens, excluir, ordenar os itens, etc. Esta dica foi escrita e testada no Delphi 2009. |
Vamos testar seus conhecimentos em JavaScript |
Qual é a forma correta de se exibir um diálogo de alerta em JavaScript? A) msgBox("Texto do aviso"); B) alertBox("Texto do aviso"); C) alert("Texto do aviso"); D) msg("Texto do aviso"); Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
O código abaixo é válido em Python?nome1 = "ALBERTO" nome2 = 'FERNANDA' print(nome1) print(nome2) A) Sim B) Não Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em |
Dimensionamento de pilares de extremidade É importante detalhar as armaduras longitudinais e transversais de um pilar de extremidade durante a concretagem dessas estruturas, evitando futuras patologias. Para isso, é importante que o projetista atenda aos requisitos normativos desse detalhamento. Sobre o detalhamento de armaduras de pilares de extremidade, assinale a alternativa correta. A) O máximo espaçamento permitido entre as barras longitudinais corresponde a 500mm. B) O espaçamento mínimo permitido entre as barras transversais corresponde a 5mm. C) O diâmetro da armadura transversal deve ser maior ou igual a 5mm ou 1/4 do diâmetro da barra longitudinal. D) O diâmetro máximo da barra longitudinal corresponde a 12,5mm e a 1/8 da barra transversal. E) Para armaduras de aço CA-50, o espaçamento vertical corresponde a 25 vezes o diâmetro da barra transversal. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica |
Fórmula de Manning Galerias subterrâneas de águas pluviais escoam todo o volume de chuvas que os bueiros conseguem drenar. São importantes para a drenagem de grandes centro. Isso porque, servem para evitar alagamentos e outros prejuízos sociais, ambientais e econômicos. Para uma galeria de águas pluviais construída em concreto, com n igual 0,013, diâmetro de 85cm, declividade de fundo (S0) de 30cm/km, transportando 550l/s em regime permanente e uniforme, determine: Qual altura da lâmina d'água pluvial que a galeria apresentará nessas condições? A) 80cm. B) 53cm. C) 60cm. D) 45cm. E) 69cm. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Fases de uma obra O memorial descritivo de um projeto paisagístico, obrigatoriamente, deverá conter: A) Relação do número de funcionários que irá trabalhar em cada etapa da obra, inclusive do setor administrativo. B) Relatório dos órgãos fiscalizadores, a ser anexado ao projeto paisagístico. C) Descrição da forma de pagamento de todas as obras que serão efetuadas. D) Relação contendo, pelo menos, três empresas que fornecerão as mudas e sementes. E) Descrição da forma de ocupação do terreno. Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
Delphi - Como habilitar ou desabilitar um TEdit do Delphi usando a função EnableWindow() da API do Windows |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento 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 |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |