С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/35: Рейтинг темы: голосов - 35, средняя оценка - 4.86
21 / 21 / 6
Регистрация: 09.01.2014
Сообщений: 118

Прерывание программы в процессе выполнения

10.01.2014, 08:21. Показов 7801. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Подскажите, есть ли возможность прерывать программу во время выполнения? Т.е. у меня в программе есть цикл, который может выполняться много тысяч раз, сто выполнений цикла может происходить от 5 до 30 и более секунд, на каждых 100 циклах есть вывод промежуточных результатов. Если я по ним вижу, что эффективности я не получаю - я хочу перезапустить цикл с другими параметрами которые могу поменять не в коде, а до запуска цикла в самом интерфейсе программы, но остановить её могу только в компиляторе или диспетчере задач. Возможно ли как-то сделать так, чтоб программа не переставала реагировать на действия во время выполнения цикла?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.01.2014, 08:21
Ответы с готовыми решениями:

Консоль закрывается в процессе выполнения программы - С++
В Visual Studio в процессе выполнения программы и в процессе работы закрывается через какое- то время консоль, сразу же открывается как...

Выводятся непонятные сообщения в процессе выполнения программы
Всем доброго дня ! Подскажите пожалуйста , почему при выводе строки (160) cout<<"\n*******...

Динамическая линковка dll в процессе выполнения программы
Есть dll с пространством имен парой функций и классов пример //MyDll.cpp namespace NS{ class FSomeClass{ }

38
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
10.01.2014, 15:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ilja123 Посмотреть сообщение
Крестик удел юзеров
Хм.. А я тут подумал и понял, что не уверен, действительно ли закрытие крестиком завершит процесс...
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
10.01.2014, 15:58
Куда он денется У Windows все козыря в руках
0
21 / 21 / 6
Регистрация: 09.01.2014
Сообщений: 118
10.01.2014, 16:00  [ТС]
Цитата Сообщение от Qwertiy Посмотреть сообщение
Эм.. Чего бы тогда просто крестиком не закрывать???
Потому что в момент выполнения цикла окно не реагирует абсолютно ни на что. Да и не закрыть мне надо программу, а прервать, чтобы тут же изменить параметры и запустить заново. Параметры у меня на форме меняются, не в коде.
Программу в этот момент могу закрыть только в диспетчере задач или остановить выполнение в компиляторе. Больше никак.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 16:03
Если не консоль, то свои методы обработки событий есть. Но это уже другой раздел форума.
1
21 / 21 / 6
Регистрация: 09.01.2014
Сообщений: 118
10.01.2014, 16:05  [ТС]
alsav22, мне в С++ и WinAPI стучаться?
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
10.01.2014, 16:08
Цитата Сообщение от alsav22 Посмотреть сообщение
другой раздел
какой другой? Обработать нажатие клавиш Этож не сложно
Я не понял у вас windows? вы wiinapi используйте?? Там же просто в обработку сообщений (цикл) написать типа
C++
1
2
3
4
case WM_KEYDOWN:
    switch (wParam) {
        case VK_ESPAPE:
                       Остановить этот несчастный цикл
1
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 16:13
Цитата Сообщение от Victorianec Посмотреть сообщение
мне в С++ и WinAPI стучаться?
Среда какая? Builder?
0
21 / 21 / 6
Регистрация: 09.01.2014
Сообщений: 118
10.01.2014, 16:16  [ТС]
Цитата Сообщение от ilja123 Посмотреть сообщение
Я не понял у вас windows? вы wiinapi используйте??
да, Windows. Отнеситесь с пониманием, что я в раздел "Для новичков" не просто так написал. Вобщем пишу в Билдере, VCL приложение. на форму накидал нужные кнопки, по нажатию одной из них запускается цикл на выполнение. Это WinAPI?

Добавлено через 46 секунд
Цитата Сообщение от alsav22 Посмотреть сообщение
Среда какая? Builder?
да, CodeGear C++ Builder 2009
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
10.01.2014, 16:17
ну найдите в коде должно быть
case WM_KEYDOWN:
switch (wParam) {
1
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
10.01.2014, 16:21
Обрабатываешь клик по кнопке стоп, дальше есть несколько вариантов:
1. Меняешь глобальный флаг, который проверяется в цикле. Если итерации тяжеловесные, то проверка флага на длительности работы почти не скажется.
2. Делаешь переменную цикла глобальной и меняешь её, чтобы цикл завершился. Поганый вариант.
3. Делаешь указатель на переменную цикла глобальным и через него меняешь. Тоже погано, но есть вероятность, что такой вариант, по сравнению с предыдущим, позволит компилятору нормально применить оптимизации.
4. Делаешь глобальный указатель на функцию или класс, содержаций функцию отмены текущего действия. Перед входом в цикл присваиваешь эту штуку, перед выходом сбрасываешь в null. Ну а вызов метода выполняет отмену вычислений каким-либо образом.

Для того, чтобы это вообще работало, нужно поместить вычисления в отдельный поток. Либо вызывать DoEvents (не знаю, есть ли нечто подобное в Си++), чтобы продолжалась обработка событий формы. Ну и в случае с DoEvents флаг - наиболее логичное решение.
1
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 16:22
Цитата Сообщение от Victorianec Посмотреть сообщение
да, CodeGear C++ Builder 2009
Точно не знаю, но, по-моему, в Builder своё есть для этих дел. https://www.cyberforum.ru/cpp-builder/
1
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
10.01.2014, 16:23
Оу.. Пока я вернулся и написал пост тут уже столько всего появилось...
ilja123, если выполнение вычислений блокирует форму, то они происходят в том же потоке и никакие события до их завершения не произойдут. Если это не изменить, то никакие обработчики не помогут.
1
21 / 21 / 6
Регистрация: 09.01.2014
Сообщений: 118
10.01.2014, 16:35  [ТС]
ilja123, Всё что нашел касательно ВинАПИ выглядит так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
USEFORM("Main.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
    try
    {
        Application->Initialize();
        Application->MainFormOnTaskBar = true;
        Application->CreateForm(__classid(TForm1), &Form1);
        Application->Run();
 
    }
    catch (Exception &exception)
    {
        Application->ShowException(&exception);
    }
    catch (...)
    {
        try
        {
            throw Exception("");
        }
        catch (Exception &exception)
        {
            Application->ShowException(&exception);
        }
    }
 
    return 0;
}
Добавлено через 10 минут
В общем спасибо всем, кто отозвался. Через несколько дней сдам её и больше не вспомню даже. Не буду на этом терять своё время и отнимать ваше.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
10.01.2014, 16:52
Вставьте где-нибудь в цикл
C++
1
Application->ProcessMessages();
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
10.01.2014, 17:10
Цитата Сообщение от Victorianec Посмотреть сообщение
Код C++
Это что-то весьма странное и полозрительное... Что это и зачем???
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
11.01.2014, 18:30
Цитата Сообщение от Qwertiy Посмотреть сообщение
Что это и зачем???
Так выглядит головной модуль проекта Borland CBuilder 6.0
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
11.01.2014, 23:46
Цитата Сообщение от Black Fregat Посмотреть сообщение
Так выглядит головной модуль проекта Borland CBuilder 6.0
А что за магический try-throw-catch во втором catch'е?
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
12.01.2014, 05:07
Я так предполагаю, чтобы обработку исключений, которые не Exception, подсунуть тому же обработчику.
Но вообще-то этот код CBuilder делает сам, никому без особой просьбы не показывает и переписывает при изменениях без предупреждения. Так что что там и зачем простому смертному остается только догадываться.
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
12.01.2014, 10:22
А может и не магия совсем. Вы видели какой код создает визуальный редактор HTML
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2014, 10:22
Помогаю со студенческими работами здесь

Выделение памяти в процессе выполнения функции
есть массив указателей на int, объявленный глобально int* arr; но заранее я не знаю, сколько мне понадобится одномерных массивов -...

Прерывание программы по ESC C++
доброй ночи Добрался до такой вот темы Пытаюсь реализовать перехват нажатия клавиши ESC и SPACE в консольном режиме Но программа не...

Можно ли "подменить" тип данных в процессе выполнения?
Добрый день! Есть у меня такой кусок кода, описывающего класс. typedef vector&lt;double&gt; complex; typedef map&lt;string,...

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

Указать тип массива в процессе работы программы
Доброго времени суток, господа! Необходимо создать массив, тип данных которого будет задаваться в зависимости от значения переменной (1, 2...


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
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. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru