Migrei já há algum tempo para o c#, mas ainda tenho alguns programas escritos em delphi 5 que ainda estão em operação.
Surgiu-me agora a necessidade de acrescentar algumas funcionalidades a um desses programas escritos em delphi 5, funcionalidades essas que já estão implementadas em c#. No entanto, devo admitir que já não me lembro como raio eu utilizava dlls que não conseguia importar.
Lembro-me que instanciava objectos, mas pouco mais. Já tentei fazer o dynamic loading da dll, mas não consigo extrair as funções.
Como exemplo, vamos imaginar que tenho duas classes na dll (teste.dll):
public static class DataModel - que contém um conjunto de funções de dados, por exemplo
{
public static bool ligar();
public static bool desligar();
public static void buildReport();
}
public class External - que contém as funções que pretendia chamar externamente, por exemplo
{
public void testeCall()
{
DataModel.ligar();
DataModel.buildReport();
DataModel.desligar();
}
}
O que tentei fazer no delphi, mas sem sucesso, foi o seguinte:
Consigo fazer o load da dll sem problemas, mas não consigo ir buscar a função qie pretendo... Alguém me poderá dar alguma dica, ou orientar-me para alguma documentação que me ajude a refrescar a memória? Lembro-me que não era desta forma que o fazia, mas pouco mais...;)
Pergunta
Bruno Nunes
Cumprimentos,
Migrei já há algum tempo para o c#, mas ainda tenho alguns programas escritos em delphi 5 que ainda estão em operação.
Surgiu-me agora a necessidade de acrescentar algumas funcionalidades a um desses programas escritos em delphi 5, funcionalidades essas que já estão implementadas em c#. No entanto, devo admitir que já não me lembro como raio eu utilizava dlls que não conseguia importar.
Lembro-me que instanciava objectos, mas pouco mais. Já tentei fazer o dynamic loading da dll, mas não consigo extrair as funções.
Como exemplo, vamos imaginar que tenho duas classes na dll (teste.dll):
public static class DataModel - que contém um conjunto de funções de dados, por exemplo
{
public static bool ligar();
public static bool desligar();
public static void buildReport();
}
public class External - que contém as funções que pretendia chamar externamente, por exemplo
{
public void testeCall()
{
DataModel.ligar();
DataModel.buildReport();
DataModel.desligar();
}
}
O que tentei fazer no delphi, mas sem sucesso, foi o seguinte:
TTesteCall = procedure();
THandle = Integer;
var Handle: THandle;
TesteCall: TTesteCall;
teste: TObject;
begin
Handle := LoadLibrary('teste.dll');
if Handle <> 0 then
begin
@TesteCall := GetProcAddress(Handle, 'testeCall');
if @TesteCall <> nil then
begin
(...)
end;
FreeLibrary(Handle);
end;
end;
Consigo fazer o load da dll sem problemas, mas não consigo ir buscar a função qie pretendo... Alguém me poderá dar alguma dica, ou orientar-me para alguma documentação que me ajude a refrescar a memória? Lembro-me que não era desta forma que o fazia, mas pouco mais...;)
Obrigado,
Bruno Nunes
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.