Fórum Ponteiros de Eventos x Interfaces #231867

12/05/2004

0

Não Tô conseguindo escrever uma classe que ´mapeia´ seus eventos em métodos de um objeto interfaceado(dá um erro de parâmetros inválidos), porém se, ao invés de uma interface eu usar uma classe com métodos abstratos, funciona perfeitamente.

  //interface de mapeamento
  IAdaptadorDeEventos = interface
  [´{D40B150D-8E97-4FF2-B405-81CE35917A3A}´]
    procedure AfterUpdateRecord(Sender: TObject; SourceDS: TDataSet;
      DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind);
    procedure BeforeUpdateRecord(Sender: TObject; SourceDS: TDataSet;
      DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind; var         Applied: Boolean);
    procedure OnUpdateData(Sender: TObject; DataSet:  TCustomClientDataSet);
    procedure OnUpdateError(Sender: TObject; DataSet: TCustomClientDataSet;
      E: EUpdateError; UpdateKind: TUpdateKind; var Response: TResolverResponse);
    procedure AfterApplyUpdates(Sender: TObject; var OwnerData: OleVariant);
    procedure BeforeApplyUpdates(Sender: TObject; var OwnerData: OleVariant);
  end;

//classe que mapeia seus eventos
function TCustomProvedorPacotes.AplicaAtualizacoes(Delta: OleVariant;
  Adaptador: TCustomAdaptadorDeEventos): OleVariant;
var ErrorCount : integer;
begin
  with FProvider do
    begin
      //Mapeia os métodos do adaptador nos eventos do provider
      BeforeUpdateRecord := Adaptador. BeforeUpdateRecord;  //erro aqui
      AfterUpdateRecord := Adaptador.AfterUpdateRecord;
      OnUpdateData := Adaptador.OnUpdateData;
      OnUpdateError := Adaptador.OnUpdateError;
      BeforeApplyUpdates := Adaptador.BeforeApplyUpdates;
      AfterApplyUpdates := Adaptador.AfterApplyUpdates;
      //aplica as atualizações e retorna o pacote atualizado
      Result := ApplyUpdates(Delta,0,ErrorCount);
    end;
end;


Será que alguém pode me explicar porque não posso usar as interfaces nesse caso ?

Qualquer ajuda será bem vinda.

obrigado.


Ruben

Ruben

Responder

Posts

12/05/2004

Comodelphi

pelo que vi vc está implementando direto na unit que o editor de typeLibrary do delphi cria, e isso não é uma boa, deve haver uma outra unit que o delphi cria para vc implementar o método.


Responder

Gostei + 0

12/05/2004

Comodelphi

Tá Usando DataSnap?


Responder

Gostei + 0

13/05/2004

Beppe

1) Quem é FProvider?
2) Mapear para que fim?


Responder

Gostei + 0

13/05/2004

Ruben

Eu tô criando uma biblioteca de classes para criar servidores.
Não estou usando DataSnap, nem mexendo em nenhuma type lybrary
Em uma das classes da minha biblioteca, eu tenho um método que vai executar um applyupdates em um provider(que está no mesmo projeto),
outro parâmetro desse método é um objeto interfaceado , cujos métodos eu desejo chamar a partir dos eventos desse mesmo provider.
Como esse objeto interfaceado pode ser de mais de um tipo, eu tô usando a interface ao invés da classe. No entanto, isso não compila, então eu troquei a interface por uma classe abstrata.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar