С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 14.09.2019
Сообщений: 9
RAD XE4+

Ошибка: "Abnormal program termination"

15.09.2019, 19:15. Показов 3451. Ответов 13

Студворк — интернет-сервис помощи студентам
При закрытии формы появляется ошибка: "Abnormal program termination".

Unit1.h
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
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ComCtrls.hpp>
 # include <vcl.h>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TButton *Button1;
    TButton *Button2;
 
    void __fastcall Button1Click(TObject *Sender);
    void __fastcall Button2Click(TObject *Sender);
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
    void __fastcall FormDestroy(TObject *Sender);
 
private:    // User declarations
 int FStart;
    bool FCanCloseSplash;
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
    __property bool CanCloseSplash = {read = FCanCloseSplash, write = FCanCloseSplash};
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Unit1.cpp
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#ifdef __BORLANDC__
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//настройка progressBar
//ProgressBar1->Min = 0;
//ProgressBar1->Max = 14;
//ProgressBar1->Step = 1;
//
 
//Form2->GeneratorOfRandomNumbersForButtons();
 
Form2->Show();
 
}
//---------------------------------------------------------------------------
 
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
                  Form1->Close();
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
  Action = caFree;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
    Form1 = 0;
}
//---------------------------------------------------------------------------
#endif
Добавлено через 10 минут
Подробное описание проблемы:

Создаётся форма, у которой есть две кнопки. При нажатии на первую кнопку открывается другая форма, в которой выполняется основная задача программы, после чего она закрывается и остаётся первая форма, которая должна быть закрыта, но при её закрытии появляется ошибка "Abnormal program termination".
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2019, 19:15
Ответы с готовыми решениями:

Abnormal program termination
В общем возникает эта ошибка. Я даже знаю какая часть кода её вызывает, но изменить ничего не могу:( Если из кода убрать эту часть, то...

Abnormal program termination?
Суть в чем. Разбираю чужой код и нашел ошибку. Когда нажимаю кнопку вылетает «Abnormal program termination» Нашел где это...

abnormal program termination
Здравствуйте. При выполнении лабы у меня возникла ошибка &quot;abnormal program termination&quot; в строчке if num1 == 0 и так далее, короче...

13
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
15.09.2019, 19:22
Зачем 45-я строка, можно поинтересоваться? Это ж главная форма приложения, как только она закроется - приложение тоже закроется, зачем указывать caFree? Смысл в чем?
0
0 / 0 / 0
Регистрация: 14.09.2019
Сообщений: 9
15.09.2019, 23:32  [ТС]
caFree забыл убрать. Смысл в том, чтобы закрыть эту форму без ошибки, которую мне выдаёт. Есть предположения, почему так может быть?
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 3
16.09.2019, 05:32
alka1da, тот код, который Вы привели, проблем не вызывает от слова совсем... Кидайте весь проект, смотреть надо что у Вас, а не у нас...
0
0 / 0 / 0
Регистрация: 14.09.2019
Сообщений: 9
16.09.2019, 10:35  [ТС]
Хорошо, прикрепляю проект.
Вложения
Тип файла: rar Пример программы.rar (2.07 Мб, 4 просмотров)
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 3
16.09.2019, 12:17
Мда...
У меня Ваш проектиш-ще даже на запускается, намертво зависая на функции GeneratorOfRandomNumbersForButtons();
Я попытался врубиться, что там должно происходить, сломал глаза об имена типа AmountOfSavedMassOfRandomNumbersForButto ns, но так и не понял, что там за мракобесие...
0
0 / 0 / 0
Регистрация: 14.09.2019
Сообщений: 9
16.09.2019, 17:09  [ТС]
Эта функция(GeneratorOfRandomNumbersForButto ns()) делает большой перебор, поэтому вам кажется, что она намертво зависает, но это не так. Нужно подождать немного и всё заработает. Дело ведь не в функции этой, а в том, что ошибка эта выпадает, когда закрываешь форму первую(на которой две кнопки).

Есть несколько предположений, в чём может быть проблема. Думаю, что проблема в неком доступе "чего-то" к "чему-то"(возможно из одной формы в другую).
Второе это то, что в функции GeneratorOfRandomNumbersForButtons() используется std::random_shuffle(). Вот я и думаю, что проблема кроется где-то вокруг него, ну или вокруг памяти, которая бесследно не пропадает.


В функции GeneratorOfRandomNumbersForButtons() генерируется 5 комбинаций из 4-ёх чисел(от 1 до 4) и записываются эти комбинации в указатель(каждая комбинация в рандомном порядке сортируется через std::random_shuffle() и проверяется на уникальность с последующими комбинациями(4-мя следующими за ней). В последующем циклом for прохожу по элементам указателя и достаю их, записывая в переменные, которые отвечают за правильный и неправильный ответ на кнопках.(вторая форма, на ней 4-ре кнопки. Переменной, которая находится в кнопке присваивается один из элементов комбинации из 4-ёх чисел, таким образом я нахожу, где правильный ответ на кнопке, когда на неё нажимают)

В указателе комбинации записываются последовательно числами, но для упрощённого примера напишу вот так(готовые 5 комбинаций в указателе):
1 2 3 4
2 1 4 3
3 4 1 2
4 3 2 1
2 1 3 4


Такую функцию я выполняю три раза, т.к. если выполнить её за раз для 15-ти комбинаций выйдет большой перебор, который не сможет завершиться.


Как-то попытался объяснить работу этой функции.

Но проблема "Abnormal termination" остаётся актуальной!

Добавлено через 16 минут
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 3
16.09.2019, 17:11
Цитата Сообщение от alka1da Посмотреть сообщение
Нужно подождать немного и всё заработает.
Да ничего подобного: AV вылетает - и все...
Цитата Сообщение от alka1da Посмотреть сообщение
Как-то попытался объяснить работу этой функции
Да зачем она вообще нужна? Что Вы сделать-то пытались с ее помощью?
Цитата Сообщение от alka1da Посмотреть сообщение
используется std::random_shuffle()
Где? Как я только не искал - нет этого...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
16.09.2019, 17:28
Цитата Сообщение от alka1da Посмотреть сообщение
Нужно подождать немного и всё заработает
24 минуты - это достаточно "немного"? Или часик надо подождать чтобы наверняка?
0
0 / 0 / 0
Регистрация: 14.09.2019
Сообщений: 9
16.09.2019, 17:35  [ТС]
У меня проходит минут 5-10 и запускатеся.


Она нужна для того, чтобы в указатель присвоить уникальные комбинации по 4 элемента.
В указателе комбинации записываются последовательно числами, но для упрощённого примера напишу вот так(готовые 5 комбинаций в указателе):
1 2 3 4
2 1 4 3
3 4 1 2
4 3 2 1
2 1 3 4


Насчёт std::random_shuffle() действительно вышла ошибка.

Добавлено через 2 минуты
Что поделать, если такая реализация функции..

Добавлено через 1 минуту
Есть у кого какие предположения, почему появляется ошибка "Abnormal program termination"?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
16.09.2019, 17:39
Цитата Сообщение от alka1da Посмотреть сообщение
Что поделать, если такая реализация функции..
Я тебе расскажу, что поделать. Рассказать, что функция должна делать, а потом переписать ее так, чтобы она это делала не за 10 минут, а за секунды. Потому что, если приложение за 24 минуты на топовом R7 3700X не прорисовывает форму - с ним что-то явно не так.

Добавлено через 1 минуту
Цитата Сообщение от alka1da Посмотреть сообщение
Есть у кого какие предположения, почему появляется ошибка "Abnormal program termination"?
Для того, чтобы разобраться в причинах - надо ошибку ПОЙМАТЬ, а запускать и каждый раз ждать по 30+ минут, чтобы дождаться ошибки - мне неинтересно, у меня есть более интересные занятия.
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 3
16.09.2019, 17:48
Цитата Сообщение от alka1da Посмотреть сообщение
Что поделать, если такая реализация функции..
т.е. Вы хотите сказать, что реализовывали этот бред не Вы? Это Вам в плюс? Но почему проект тогда Вы называете своим? Это Вам в минус...
alka1da, точное техзадание огласите, что Ваша суперзадумчивая программа должна делать!
0
0 / 0 / 0
Регистрация: 14.09.2019
Сообщений: 9
16.09.2019, 18:52  [ТС]
Задача функции:
В указатель типа int присвоить уникальные комбинации из четырёх подряд идущих элементов, чтобы в последующем из указателя, который обрабатывается в этой функции(GeneratorOfRandomNumbersForButto ns()), присваивать по 4 значения в переменные, которые находятся в кнопках на форме для того, чтобы их обработать.(каждые последующие 4-ре элемента уникальны, т.е. их комбинация не повторяется с последующими 4-рмя элементами и так до 5-ти комбинаций)


Итак, к примеру, первой кнопке было присвоено в переменную из указателя значение 1(см. пример ниже), что соответствует правильному ответу, а в остальные кнопки в их переменные были присвоены значения 2,3,4, что соответствует неправильным ответам.
Дальше обрабатывается значение переменных в кнопках и начисляются очки за правильный или неправильный ответ. Дальше указатель итерируется на следующие 4-ре элемента уже со значениями 2,1,4,3(см. пример ниже), что говорит, что в первой, третей и четвёртой кнопке неправильные ответы, а во второй правильный. И так до конца вопросов или до 3 неправильных попыток. Если попытки закончились, то очки обнуляются и начинается новая игра.

В указателе комбинации записываются последовательно числами, но для упрощённого примера напишу вот так(готовые 5 комбинаций в указателе).
ПРИМЕР:
1 2 3 4
2 1 4 3
3 4 1 2
4 3 2 1
2 1 3 4

Выше указан вариант для удобного представления 5-ти комбинаций по 4 элемента в каждой. (комбинации уникальны между собой, т.е. каждая последующая комбинация из 4-ёх чисел не повторяется с предыдущей)

По очереди запись в указатель выглядит вот так:
1
2
3
4
2
1
4
3
3
4
1
2
4
3
2
1
2
1
3
4


Чтобы мне раскидать в Caption четырёх кнопок ответы без последующего повторения правильного ответа в той же кнопке я выполняю ряд функций(GeneratorOfRandomNumbersForButto ns(),GeneratorOfRandomNumbersForButtons2 (),GeneratorOfRandomNumbersForButtons()) , которые заполняют указатель "уникальными" комбинациями и тормозят процесс. Тормозят процесс потому, что там происходит большой перебор, как я думаю. Пока я не вижу другого решения как раскидать в разные кнопки рандомно ответы на вопросы.

Добавлено через 1 минуту
Если я до сих пор не донёс суть, могу поговорить в телеграмме или в другом мессенджере, чтобы донести смысл.
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 3
17.09.2019, 09:41
Цитата Сообщение от alka1da Посмотреть сообщение
я выполняю ряд функций
alka1da, а Вам не кажется, что там, где надо было просто забить один гвоздь Вы развернули целый промышленный комплекс, который до сих пор не заработал?
Зачем эти огороды? У вас 4 цифры: количество чисел, состоящих из этих цифр однозначно - 4! = 24... Ну и пропишите их раз и навсегда в константе...
Цитата Сообщение от alka1da Посмотреть сообщение
Пока я не вижу другого решения
Обычное решение таких задач - БД... Можно обойтись простыми файлами, можно вообще хранить в коде и вопросы и ответы. А неповторяемость вопросов/вариантов ответов от запуска к запуску приложения обеспечивается созданием массивов/векторов вопросов и ответов и их случайное перемешивание (да, да, тем самым std::random_shuffle(), который Вы упомянули, но никак нигде не использовали, родив вместо этого жуткого монстра)

Добавлено через 4 часа 45 минут
alka1da, вот, кстати, можете посмотреть, довольно близко к Вашей теме...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2019, 09:41
Помогаю со студенческими работами здесь

TFileStream и Abnormal program termination
есть классы class Street { public: string Contry; string City; string Street; }; class Adress : public Street

Охота на Abnormal program termination
Добрый день. Уважаемые знатоки, нужна помощь. Дано: приложение на С++ Builder 10.3.3, которое представляет собой TCP-сервер на Indy. В...

Килоггер вызывает ошибку abnormal program termination
Доброго времени суток!!! Программа перехватывает нажатие на PrintScreen. В программе есть DLL библиотека с Хуками, которая и...

Проблема 'abnormal program termination' загрузки сохраненного в скомпилированной программе изображения
Здравствуйте, уважаемые форумчане, возникла дилемма, в довольно ёмкой программе (код которой могу предоставить) произошла ошибка:...

"Abnormal program termination" при закрытии формы
При закрытии формы вылетает сообщение &quot;Abnormal program termination&quot;, и проект закрывается. Форма вызывается, как: std::auto_ptr...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Изучаю 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