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 Delphi

Quantidade 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 Delphi

Quantidade 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

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware 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 funcionalidadesControle 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
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 9 usuários muito felizes estudando em nosso site.