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

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

26.07.2009, 13:16. Показов 1549. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru