| Exibir mensagem anterior :: Exibir próxima mensagem | 
	
	
		| Autor | Mensagem | 
	
		| Junior_82 Novato
 
  
 
 Registrado: Sexta-Feira, 14 de Abril de 2006
 Mensagens: 6
 
 
 | 
			
				|  Enviada: Ter Dez 22, 2009 10:21 am    Assunto: ajuda com DLL - Resolvido!!! |   |  
				| 
 |  
				| Seguinte: 
 Estou fazendo uma DLL que altera uma chave no registro. O problema em alterar a chave no registro esta resolvido.. mas nao estou conseguindo chamar a procedure desta DLL através de outra aplicação... quando clico no botão sempre estoura erro...
 
 Segue codigo da minha DLL:
 
 
  	  | Código: |  	  | library EscritorRegistro;
 
 { Important note about DLL memory management: ShareMem must be the
 first unit in your library's USES clause AND your project's (select
 Project-View Source) USES clause if your DLL exports any procedures or
 functions that pass strings as parameters or function results. This
 applies to all strings passed to and from your DLL--even those that
 are nested in records and classes. ShareMem is the interface unit to
 the BORLNDMM.DLL shared memory manager, which must be deployed along
 with your DLL. To avoid using BORLNDMM.DLL, pass string information
 using PChar or ShortString parameters. }
 
 uses
 SysUtils, Registry, Windows, Messages, Variants, Graphics, Controls,
 Dialogs, StdCtrls, Classes;
 
 
 
 {$R *.res}
 
 var Reg : TRegistry;
 
 procedure WriterRegistry(porta : string); stdcall; export;
 begin
 
 Reg := TRegistry.Create;
 Reg.RootKey := HKEY_CURRENT_USER;
 if Reg.OpenKey('CONF_CONT_ERG', true) then
 begin
 Reg.WriteString('Porta', 'COM5');
 Reg.LazyWrite := False; // força a gravação direta no registro
 Reg.CloseKey;
 end;
 
 end;
 
 exports
 WriterRegistry index 1;
 
 begin
 end.
 
 | 
 
 O codigo do form que estou testando a DLL segue abaixo:
 
 
  	  | Código: |  	  | unit testandoDLL;
 
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Registry;
 
 type
 TForm1 = class(TForm)
 Button1: TButton;
 procedure Button1Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 
 var
 Form1: TForm1;
 Reg : TRegistry;
 
 implementation
 
 {$R *.dfm}
 
 procedure WriterRegistry(porta:string); external 'EscritorRegistro.dll' index 1;
 
 procedure TForm1.Button1Click(Sender: TObject);
 var porta:string;
 
 
 begin
 WriterRegistry(porta);
 end;
 
 end.
 
 | 
 
 Se alguém puder me dar uma força...
 
 Abraço!
 
 Editado pela última vez por Junior_82 em Qua Dez 23, 2009 9:39 am, num total de 1 vez
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| joemil Moderador
 
  
 
 Registrado: Quinta-Feira, 25 de Março de 2004
 Mensagens: 9100
 Localização: Sinop-MT
 
 | 
			
				|  Enviada: Ter Dez 22, 2009 2:54 pm    Assunto: |   |  
				| 
 |  
				| pergunta basica: qual erro? _________________
 <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
 Enviar imagens: http://tinypic.com/
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| Junior_82 Novato
 
  
 
 Registrado: Sexta-Feira, 14 de Abril de 2006
 Mensagens: 6
 
 
 | 
			
				|  Enviada: Ter Dez 22, 2009 3:15 pm    Assunto: |   |  
				| 
 |  
				| opa... 
 cara.. na hora que clico no botão em que ele deveria rodar a procedure, estoura um erro de EAccess Violation...
 
 "Eaccess violation at 0x00403e22: write of adress 0x0044d980"
 
 a partir daí, ele entra em debuger e preciso resetar o Programa.
 
 nao sei o que pode estar ocorrendo...
 
 Valeu...
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| DonOctavioDelFlores Colaborador
 
  
 
 Registrado: Quarta-Feira, 12 de Setembro de 2007
 Mensagens: 2630
 Localização: Pra lá de Bagda
 
 | 
			
				|  Enviada: Ter Dez 22, 2009 3:54 pm    Assunto: |   |  
				| 
 |  
				| debug? 
 pra debugar a DLL é só ir em Run->Parameters->Host Application.
 _________________
 “The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| gilsonnrodrigues Moderador
 
  
 
 Registrado: Quinta-Feira, 14 de Abril de 2005
 Mensagens: 9009
 Localização: Governador Valadares-MG
 
 | 
			
				|  Enviada: Ter Dez 22, 2009 3:57 pm    Assunto: |   |  
				| 
 |  
				| stdcal? |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| Junior_82 Novato
 
  
 
 Registrado: Sexta-Feira, 14 de Abril de 2006
 Mensagens: 6
 
 
 | 
			
				|  Enviada: Qua Dez 23, 2009 9:37 am    Assunto: |   |  
				| 
 |  
				| Bah.. pessoal... 
 Desculpa aí.. ficou faltando o stdcall na declaração da procedure na aplicação de teste...
 
 valeu gilson...
 
 Obrigado por tudo ai pessoal.. Resolvido
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		|  |