Обработчик события procedure of object не компилируется

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
mdimich
новенький
Сообщения: 29
Зарегистрирован: 03.12.2007 10:24:03

Обработчик события procedure of object не компилируется

Сообщение mdimich »

В модуле db.sql объявлен тип:

Код: Выделить всё

TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError; var DataAction: TDataAction) of object;

и класс TDataSet, от которого наследуется TSQLQuery со следующими объявлениями:

Код: Выделить всё

  TDataSet = class(TComponent)
  private
    FOnDeleteError: TDataSetErrorEvent;
   ...
   public
    property OnDeleteError: TDataSetErrorEvent read FOnDeleteError write FOnDeleteError;
   ...


Мне нужно установить свой обработчик события OnDeleteError. для этого я делаю следующее (поскольку процедурный тип объявлен как of object, делаю его членом класса):

Код: Выделить всё

{$mode objfpc}{$H+}
Uses ibconnection, sqldb, sysutils, db;
type
  TMyErrorEvent = class
  public
    procedure DataSetError (DataSet: TDataSet; E: EDatabaseError; var DataAction: TDataAction);
  end;
...
  procedure TMyErrorEvent.DataSetError (DataSet: TDataSet; E: EDatabaseError; var DataAction: TDataAction);
  begin
    DataAction := daAbort;  // for test only
  end;

var
  SQLQuery : TSQLQuery;
...
begin
...
  with TMyErrorEvent.Create do SQLQuery.OnDeleteError := DataSetError; // тут ошибка компиляции
...
end;


... и получаю ошибку компиляции:
Free Pascal Compiler version 2.2.0 [2007/11/30] for x86_64
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for x86-64
Compiling test.pas
test.pas(103,40) Error: Wrong number of parameters specified for call to "DataSetError"


Пожалуйста, подскажите, как правильно написать, а то я уже весь трафик извел на чтение книг на эту тему.
Bupyc
постоялец
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

Сообщение Bupyc »

так надо писать

with TMyErrorEvent.Create do SQLQuery.OnDeleteError := @DataSetError;
mdimich
новенький
Сообщения: 29
Зарегистрирован: 03.12.2007 10:24:03

Сообщение mdimich »

Спасибо!
А я догадывался, откуда у меня руки растут.....
Ответить