[***]
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


-- 
<<<<< 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