var в заголовке стандартного обработчика

Вопросы программирования и использования среды Lazarus.

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

Ответить
Аватара пользователя
Xenar
постоялец
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

var в заголовке стандартного обработчика

Сообщение Xenar »

Всем доброго дня.
Столкнулся с такой проблемой.
Мне нужно что бы стандартный обработчик типа

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

procedure TForm1.RadioButton4Change(Sender: TObject);

выдавал наружу данной процедуры значения переменной, меняю обработчик на

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

procedure TForm1.RadioButton4Change(Sender: TObject;  var procent: Integer);
begin
 procent:= 2;
end;

в объявлении класса формы тоже делаю соответствующее изменение.
Проект нормально компилируется без всяких предупреждений, но при реализации данного обработчика получаю ошибку

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

Проект вызвал класс исключения 'External: SIGSEGV'.


Если я убираю var из заголовка то исключения нет.

В чем я ошибся??
Аватара пользователя
rayanAyar
новенький
Сообщения: 42
Зарегистрирован: 06.01.2011 07:22:52
Откуда: Новоуральск

Сообщение rayanAyar »

Нельзя добавлять свои переменные в обработчик события.
Аватара пользователя
Xenar
постоялец
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Сообщение Xenar »

Печально. Но спасибо за разъяснения.
Аватара пользователя
rayanAyar
новенький
Сообщения: 42
Зарегистрирован: 06.01.2011 07:22:52
Откуда: Новоуральск

Сообщение rayanAyar »

Если будет больше информации зачем это было нужно - может придумаем как обойтись без добавления своих переменных в обработчик события. Я что-то не припомню чтобы возникала необходимость в таких манипуляциях.
Аватара пользователя
vada
энтузиаст
Сообщения: 691
Зарегистрирован: 14.02.2006 12:43:17

Сообщение vada »

Можно создать класс наследник от нужного со свим обработчиком событий. Муторно правда...
Проще глобальную переменную описать чтобы стандартный обработчик в нее инфу складывал. Это запростяк.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Можно создать переменную в private области класса и с ней работать в обработчике. Это будет проще.
Аватара пользователя
Xenar
постоялец
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Сообщение Xenar »

Всем спасибо, уже решил проблему путем дополнительной процедуры. Конечно, теоретические проще было бы передать значение из процедуры-обработчика, но нет так нет. Перефразируя классиков, "я пошел другим путем" :D

Добавлено спустя 4 минуты 24 секунды:
vada писал(а):Проще глобальную переменную описать чтобы стандартный обработчик в нее инфу складывал. Это запростяк.

Хм очень интересно, а как?? В качестве задела на будущее. Но видимо Vadin как раз рецепт и написал, насколько я понял
Можно создать переменную в private области класса и с ней работать в обработчике. Это будет проще.
Ответить