Проблема с Callback функциями

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

Проблема с Callback функциями

Сообщение Nexmean » 09.03.2013 14:01:12

Есть проблема. При запуске программы написанной под FPC 2.6.2 вылазит ошибка
Проект вызвал класс исключения 'External: SIGSEGV'.

В файле 'pallete.pas' на строке 52:
MethodColorChange := ColorChange
.

Вот в чем собственно суть: есть класс TFormMain который устанавливает значение переменной процедурного типа в объекте класса TPalleteForm.
Код: Выделить всё
unit Main;

interface

uses
    Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics,
    Menus, ExtCtrls, StdCtrls, Buttons, ActnList, Spin, ComCtrls,
    Pallete;

type
    TFormMain = class(TForm)
        procedure FormCreate(Sender: TObject);
    private
        procedure ColorChange(Sender: TObject);
    public
  end;

var
    FormMain: TFormMain;

implementation
    procedure TForm1.FormCreate(Sender: TObject);
        begin
            PalleteForm.SetColorChange(@ColorChange);
        end;

    procedure TForm1.ColorChange(Sender: TObject);
        begin
           
        end;

end.


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

{$mode objfpc}{$H+}

interface

uses
    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
    ExtCtrls;

type
   TMethodColorChange = procedure(Sender: TObject) of object;

   TPalleteForm = class(TForm)
      private
         MethodColorChange: TMethodColorChange;
      public
         procedure SetColorChange(ColorChange: TMethodColorChange);
   end;

var
   PalleteForm: TPalleteForm;

implementation

   procedure TPalleteForm.SetColorChange(ColorChange: TMethodColorChange);
      begin
         MethodColorChange := ColorChange;
      end;

end.


P.S. Тут не весь код, но только тот который имеет значение в данное проблеме.
Nexmean
незнакомец
 
Сообщения: 3
Зарегистрирован: 12.11.2012 06:31:57

Re: Проблема с Callback функциями

Сообщение runewalsh » 30.03.2013 22:22:27

Код: Выделить всё
PalleteForm.SetColorChange(@ColorChange);

Воткни перед этой строкой Assert(Assigned(PaletteForm)), узнаешь нечно интересное.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25


Вернуться в Free Pascal Compiler

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

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

Рейтинг@Mail.ru