Oi Ricardo, Não sei se vc sabe para que serve um interface, mas o
uso de uma interface exige que vc tenha um bom nível de conhecimento
para usa-la.
  Tem uma série de erros no que vc está querendo implementar. 

Primeiro: vc declarou 2 métodos na Interface(GetNome e SetNome) que
não foram declarados no Objeto.

Segundo: Seu Metodo GetNome e SetNome precisam de um atributo FNone
por exemplo para ler e escrever dele.
     Ex. TMeuObjeto = class(TObject,IMinhaInterface)
         private
           FNome: String;
           function GetNome: String;
           procedure setNome(const Value: String);
         public
           property Nome: String Read GetNome Write SetNome;
         end;  
       //Onde
       function GetNome: String;
       begin
         Result := FNome;
       end;

      procedure setNome(const Value: String);
      begin
        FNome := Value;
      end;

Terceiro: Vc precisará implementar Identificadores globais unicos GUID
(globally unique identifier) além dos métodos _AddRef e _Release.

 
Seu Objeto ficaria +/- assim ...

  TMeuObjeto = class(TObject,IMinhaInterface)
  protected
    FRefCount: Integer;
    function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
  private
    FNome: String;
    function GetNome: String;
    procedure setNome(const Value: String);
  public
    procedure AfterConstruction; override;
    procedure BeforeDestruction; override;
    //class function NewInstance: TObject; override;
    property RefCount: Integer read FRefCount;
    property Nome: String read GetNome Write setNome;
  end;

e sua interface +/- assim ...

  IMinhaInterface = interface
    function GetNome:String;
    procedure SetNome(Const Value : String);
  end;

Vc instanciaria seu objeto assim :
procedure TForm1.Button1Click(Sender: TObject);
Var
  Obj : TMeuObjeto;
begin
  try
    //instacia um objeto TMeuObjeto
    Obj := TMeuObjeto.create;
    //Atribui um valor ao atributo nome
    Obj.Nome := 'Teste';
    //exibe o atributo Nome num ShowMessage
    ShowMessage(Obj.GetNome);
  finally
    //Desaloca o Objeto da memoria e aterra o ponteiro
    FreeAndNil(Obj);
  end;
end;

Vale ressaltar que sua interface deve ficar numa unit diferente da do
seu Objeto.


Bem, espero que tenha lhe ajudado ...

Abraços
Eduardo Bianchi Ribeiro







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