С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
3 / 3 / 2
Регистрация: 17.05.2009
Сообщений: 69

Функция внутри обработчика события?

26.07.2009, 13:16. Показов 1553. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что я сделал не так почему выдает ошибку?
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::ValueListEditor1StringsChange(TObject *Sender)
{
 void zapis(int Nzapisi) {
  SHAGI[Nzapisi].V_th=ValueListEditor1->Cells[1][6];
 }
 
 if (...)  zapis(iSHAGI-1);
}
пишет:
[BCC32 Error] GlavnForm.cpp(1015): E2141 Declaration syntax error
[BCC32 Error] GlavnForm.cpp(1036): E2139 Declaration missing ;
[BCC32 Error] GlavnForm.cpp(1037): E2190 Unexpected }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.07.2009, 13:16
Ответы с готовыми решениями:

Вызов обработчика события.
Можно ли из одного обработчика события, например: void __fastcall TForm1::Button1Click(TObject *Sender) { //Код обработчика...

Создание обработчика события
Пытаюсь создатьобработчик события для динамически созданного элемента. В unit.cpp void __fastcall TForm1::Button1Click(TObject *Sender)...

Создание собственного обработчика события
Есть компонент с TStringList, как добавить в этот компонент собственный обработчик события? К примеру отлавливать его изменения и...

6
 Аватар для sёgun
2 / 2 / 0
Регистрация: 25.07.2009
Сообщений: 5
26.07.2009, 13:31
Доброго времени суток, trancer88!

Я не знаю точно, можно ли объявлять функции внутри обработчиков (сам никогда не пробовал). Но на мой взгляд, такое объявление функции неверно чисто по идеологическим соображениям. К тому же Ваша функция включает в себя лишь одну строчку кода. Подумайте, нужно ли вам дополнительно загружать в стек какие-то параметры для функции, в которой как в таковой нет особого смысла.
1
3 / 3 / 2
Регистрация: 17.05.2009
Сообщений: 69
26.07.2009, 14:01  [ТС]
Цитата Сообщение от sёgun Посмотреть сообщение
Доброго времени суток, trancer88!

Я не знаю точно, можно ли объявлять функции внутри обработчиков (сам никогда не пробовал). Но на мой взгляд, такое объявление функции неверно чисто по идеологическим соображениям. К тому же Ваша функция включает в себя лишь одну строчку кода. Подумайте, нужно ли вам дополнительно загружать в стек какие-то параметры для функции, в которой как в таковой нет особого смысла.
1. Да вот в том то и проблема что включает она в себя 20 строк просто я лишние выкинул для наглядности...
2. Не хотелось бы выносить ее за пределы этого обработчика, так как она нигде больше не нужна...
Может есть что то на подобие что можно объявить внутри "обработчика"? (функция сама длиной строк в 20 и запросов к ней тоже штук 20 будет, если без нее то 5 страниц текста лишнего )
0
 Аватар для sёgun
2 / 2 / 0
Регистрация: 25.07.2009
Сообщений: 5
26.07.2009, 14:16
А что она вообще должна делать (в двух словах)? Нет ли схожих по контексту функций? Возможно имеет смысл написать небольшой класс.
0
3 / 3 / 2
Регистрация: 17.05.2009
Сообщений: 69
26.07.2009, 14:39  [ТС]
Цитата Сообщение от sёgun Посмотреть сообщение
А что она вообще должна делать (в двух словах)? Нет ли схожих по контексту функций? Возможно имеет смысл написать небольшой класс.
C++
1
2
3
4
5
6
7
8
9
10
11
void zapis(int Nzapisi) { //Nzapisi - номер элемента из массива структур "SHAGI[500]"
 //ниже производится запись данных из строк ValueListEditor1 в переменные
  //определенные в массиве структур "SHAGI[]" под номером "Nzapisi"
 SHAGI[Nzapisi].PI_q =ValueListEditor1->Cells[1][1];
 SHAGI[Nzapisi].PI_pt=ValueListEditor1->Cells[1][2];
 SHAGI[Nzapisi].K_qml=ValueListEditor1->Cells[1][3];
 SHAGI[Nzapisi].A_type_met=ValueListEditor1->Cells[1][4];
 SHAGI[Nzapisi].A_type_ox=ValueListEditor1->Cells[1][5];
 SHAGI[Nzapisi].V_th=ValueListEditor1->Cells[1][6];
 ... //еще 12 подобных записей
}
Функция запрашивается в одном обработчике событй; при разных условиях отправляет разное число "Nzapisi"
ЗЫ: А вообще в конечном итоге это кусок кода который должен будет обеспечивать функцию программы "шаг назад" "шаг вперед"...
0
UNIX-way
 Аватар для Delphin_KKC
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
26.07.2009, 15:03
В Си нельзя писать функции внутри других функций.
А что мешает определить её вне обработчика?
1
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
26.07.2009, 15:18
trancer88,
как только оно будет поддерживать новый стандарт C++0x, так сразу можно будет юзать встроенные функции

auto zapis = [](int n) { ... }
а пока - увы, довольствуйся тем, что есть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.07.2009, 15:18
Помогаю со студенческими работами здесь

Создание обработчика события Onclick с дополнительными парметрами
Всем привет. Есть дочерний класс от TPanel. И для него потребовалось создать обработчик OnClick с дополнительным параметром. Что-то...

Присоединение обработчика события к динамическому массиву контролов
Создаём массив кнопок TButton *btn; //.... void __fastcall TForm1::FormShow(TObject *Sender) { for (int i=0;i<5;i++) ...

Вызвать обработчик события внутри другого обработчика
У окна есть обработчик Loaded="Window_Loaded", который мониторит состояние всего окна. Нужно чтобы Window_Loaded смотрел какой контрол...

Создание объекта-события и обработчика события
Допустим у меня есть следующий класс: public class Example { private boolean bool; public boolean isBool() { return bool;...

Подключение обработчика события
Привет всем, подскажите пожалуйста, как подключить событие к блочному елементу div используя JS? Спасибо


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru