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

 



Responder a