Ponteiros de Eventos x Interfaces
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.
Será que alguém pode me explicar porque não posso usar as interfaces nesse caso ?
Qualquer ajuda será bem vinda.
obrigado.
//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
Curtidas 0
Respostas
Comodelphi
12/05/2004
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.
GOSTEI 0
Comodelphi
12/05/2004
Tá Usando DataSnap?
GOSTEI 0
Beppe
12/05/2004
1) Quem é FProvider?
2) Mapear para que fim?
2) Mapear para que fim?
GOSTEI 0
Ruben
12/05/2004
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.
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.
GOSTEI 0