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

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

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

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

Сообщение mdimich » 26.06.2008 10:39:02

В модуле 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"


Пожалуйста, подскажите, как правильно написать, а то я уже весь трафик извел на чтение книг на эту тему.
mdimich
новенький
 
Сообщения: 29
Зарегистрирован: 03.12.2007 11:24:03

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

Сообщение Bupyc » 26.06.2008 10:57:05

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

with TMyErrorEvent.Create do SQLQuery.OnDeleteError := @DataSetError;
Bupyc
постоялец
 
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

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

Сообщение mdimich » 26.06.2008 11:08:21

Спасибо!
А я догадывался, откуда у меня руки растут.....
mdimich
новенький
 
Сообщения: 29
Зарегистрирован: 03.12.2007 11:24:03


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

Рейтинг@Mail.ru