Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigo Miss

Chamando dll somente na hora de usa-la

Recommended Posts

Alo galera!!! To começando a mexer com dlls,,, e me pintou a seguinte curiosidade:Como q eu chamo uma dll no meu sistema,, sem interferir na hora de carregar o programa independente c a dll esta ou naum esta no caminho apropriado??? verificando assim somente no momento em q o sistema for usar realmente a dll???

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar o Handle, eu faço algo do tipo:

 

logo abaixo do type coloco:

 

TNome_da_Funcao  = function (parâmetros_a_passar): tipo_retorno; stdcall;

Chamada da DLL

 

procedure TfrmPrincipal.BitBtn1Click(Sender: TObject);var	Handle: THandle;	funcao: TNome_da_Funcao;beginHandle:=LoadLibrary('Nome_da_DLL.Dll');if Handle <> 0 then	begin	@funcao:=GetProcAddress(Handle, 'Nome_da_Funcao');	if @funcao <> nil then		begin		//chama a função passando os parâmetros		if funcao(parâmetros) = restricao then			//executa o q desejar		end;FreeLibrary(Handle);end;

Neste caso não preciso ter a DLL...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tanto faz se você atribui GetProcAddress a funcao ou @funcao, no caso funcao é um ponteiro sem tipo, ou seja, não tipado. Quando você utiliza por ex: @funcao, terá o endereço de memória da variável.

No caso @funcao irá conter a procedure, function chamada, podendo assim validar se a mesma existe validando pelo nil

if @funcao <> nil then
Evitando assim aquelas mensagens de erro de acesso a memória...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.