Elazar obrigado pela ajuda! Esse código não é o meu eu coloquei ai apenas para exemplificar o meu problema, logo abaixo eu coloquei o texto "Implementos os metodos da interface", os metodos que reclamou ai eu os implementei, mas eu ja consegui resolver, o problema era que eu tava dando um cast de um objecto para uma interface, e isso tava gerando os erros.
Valeu pela força. ----- Original Message ----- From: Elazar Dornelles Ceza To: delphi-br@yahoogrupos.com.br Sent: Tuesday, August 29, 2006 9:05 AM Subject: RES: [delphi-br] Problema com interfaces. [***] Estou tentando trabalhar com interfaces, mas ta complicado. Tenho MinhaInterface=interface function GetNome:String; procedure SetNome(Value : String); property nome:string read GetNome write SetNome; end; MeuObjeto=Class(TInterfacedObject,MinhaInterface); end; Implementos os metodos da interface. Faço um codigo assim. Var Obj : MeuObjeto; begin Obj := MeuObjeto.create; Obj.Nome := 'Teste'; ShowMessage(Obj.Nome);///Nesse ponto da access violation. end; Está dando acess violation quando vou tentar da um showmessage mostrando o conteudo de Obj.nome, quando eu vou debugando e paro com o mouse em cima de Obj.Nome ele mostra o conteudo certo, não sei o pode está acontecendo. Outro problema é quando eu tento dar um free em obj também da access violation. Qual pode da uma lúz pra solucionar esses problemas? At. Ricardo Lima [*****] Amigo, não leva a mal não mas como conseguiu compilar isto???? ...o compilador do delphi (pelo menos aqui pra mim) dis que eu não implementei os metodos da interface... Pra funcionar voce tem que fazer assim olha. { Interfaces funcionam como um contrato apenas...um contrato que duas aplicações entende os seus 'termos' para poder utiliza-la.... Por isso em uma interface não se implementa nada, apenas declara os metodos...(metodos estes que serão implementados no objetos que implementar esta interface)} MinhaInterface = interface function GetNome:String; procedure SetNome(Value : String); property Nome : string read GetNome write SetNome; end; { Ok, dada a interface acima agora eu vou criar um objeto pra implementar o 'contrato', ou aliar, criar os mecanismos que vai fazer o contrato funcionar. Normalmente as interfaces podem ser utilizadas em Units separadas dos codigos fontes... Mas necessárias para compilar o objeto } MeuObjeto = class(TInterfacedObject, MinhaInterface) private Fnome : String // Aqui tem a propriedade public { Estes proximos dois procedimentos DEVEM existir em TODOS os objetos que forem implementar a MinhaInterface (lembra do contrato)} function GetNome:String; procedure SetNome(Value : String); property Nome : String read GetNome write SetNome; end; {...} implementation {...} function MeuObjeto.GetNome:String; begin Result := FNome; end; procedure MeuObjeto.SetNome(Value : String); begin FNome := Value; End; { ai voce declara uma variavel do seu objeto } var vObjeto : MinhaInterface; begin vObjeto := MeuObjeto.Create; vObjeto.Nome := 'Elazar'; {...} ShowMessage('O nome do objeto é: ' vObjeto.Nome); Certo meu camarada... Elazar _______________________________________________________ Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! http://br.acesso.yahoo.com [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html