Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30

Окно с отладочной печатью

25.04.2009, 14:34. Показов 4896. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочется сделать трассировку работы программы через отладочные печати

Сначала опишу то, как бы я это сделал в консольной программе. Сделал бы себе интерфейс Debug с прототипом printf'а, а внутри него под опцией через vfprintf слил бы всё в файл (или вывалил на экран). Таким образом вся трасса работы программы перед глазами и если она фатально умрёт, то трассу можно проанализировать

Хочется сделать такое в окошечном приложении. Т.е. создать отдельное окошко и интерфейс аналогичный вышенаписанному Debug. А потому вопросы:
- Какой элемент использовать, куда вся печать будет сваливаться? Т.е. фактически в отладочном окне мы имеем текстовый редактор. При этом нужно, чтобы содержимое окна можно было бы скопировать в буффер (условно говоря, отдаю пользователю программу, а он в процессе работы сообщает мне об ошибках, которые он наблюл визульно и при этом присылает всю трассу из окна). Хотелось бы, чтобы можно было наваять интерфейс, аналогичный printf'у, который внутри себя уже использует va_list, который можно было бы куда-нибудь подать. Но на крайний случай можно обойтись и без этого
- Необходимость второго порядка. Нужно сохранить это окно на тот случай, если задача фатально кердыкнется (обращение по кривому указателю, появление эксепшна, который нигде не отловился). Т.е. фактически написать некий обработчик фатальной ситуации, который создаст окошко с текстом, что программе кердык, а потому скопируйте содержимое отладочного окна, потому что сейчас программа умрёт
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.04.2009, 14:34
Ответы с готовыми решениями:

Создать окно произвольного размера, скрыть окно, показать окно, удалить окно.
Создать окно произвольного размера, скрыть окно, показать окно, удалить окно. Для создания окна необходимо произвести следующие...

Проект отладочной платы
http://cs9575.vkontakte.ru/u101444220/125315991/x_188299b1.jpg процесс сборки ...

Выбор отладочной платы
Всем привет. Решил глубоко вникнуть в МК и захотел себе приобрести отладочную плату, но проблема в том что по деньгам ограничен, но и...

30
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
30.04.2009, 00:10
Студворк — интернет-сервис помощи студентам
C++
1
2
3
//вниз Memo до упора
{
    SendMessage(MemoEnm->Handle, EM_LINESCROLL, 0, MemoEnm->Lines->Count);
Прокрутка к последней линии.

SendMessage() - неотлагаемое сообщение.

Добавлено через 2 минуты 6 секунд
EM_LINESCROLL <==> 182;
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
30.04.2009, 17:22  [ТС]
Мде... как всё сложно. Попробуем

Добавлено через 6 часов 24 минуты 56 секунд
Однако работает
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
03.05.2009, 14:49  [ТС]
Вопрос далее.
У меня есть основное окно и несколько доплнительных (типа отладочного)
Какое событие основного окна соотвествует тому, что все окна и элементы уже построены и это событие вызовется единственный раз на всю программу?

Конструктор - не то (ещё не все формы построены), OnActivate - в моём случае оказалось, что StringGrid ещё не проинициализирован. OnShow вызывается постоянно
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
08.05.2009, 14:35
Evg,



Цитата Сообщение от Evg Посмотреть сообщение
Какое событие
Вложения
Тип файла: rar EndBuildingForms.rar (19.8 Кб, 10 просмотров)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
08.05.2009, 15:51  [ТС]
mirso, и так какой ответ на вопрос?
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
08.05.2009, 16:57
Evg!

Ответ - динамический таймер!
С оповещением.
TTrayIcon - визуально!(Y/N - TrayIcon1->IconIndex = 0 or 1 TImageList)

и

C++
1
2
3
4
if(SecondaryForm && 
       AdditionalForm->yes )
     {ShowMessage("Все построено, таймер удален");//наглядно
     MessageBeep(MB_OK);}//сигнал
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
08.05.2009, 17:27  [ТС]
Э... ну это всё-таки вариант из разряда "через задницу". А "штатного" варианта нет чтоли?
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
08.05.2009, 22:06
Evg,
Цитата Сообщение от Evg Посмотреть сообщение
А "штатного" варианта нет чтоли?
Штатный вариант
C++
1
Application->OnIgle = &(твой обработчик);
//вычисления закончены



Цитата Сообщение от mirso Посмотреть сообщение
if(SecondaryForm != NULL) ... ;
//форма создана
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
08.05.2009, 22:15  [ТС]
Application->OnIgle вызовется перед Application->Run();?
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
08.05.2009, 22:28
C++
1
2
3
4
5
6
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{Application->OnIgle = &Button1Click;//любой обработчик
}
//---------------------------------------------------------------------------
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
14.05.2009, 20:39  [ТС]
Цитата Сообщение от mirso Посмотреть сообщение
C++
1
2
3
4
5
6
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{Application->OnIgle = &Button1Click;//любой обработчик
}
//---------------------------------------------------------------------------
Чуть более подробно вот
http://cppbuilder.ru/articles/0162.php

Для себя сделал так. В конструкторе установил обработчик события OnIdle, а в самом обработчике сделал действия, которые необходимо сделать после инициализации всех форм, после чего сделал "Application->OnIdle = NULL;" чтобы больше в этот обработчик не попадать (он мне уже не нужен)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2009, 20:39

Вывод отладочной информации
Добрый день Есть консольная программа которую пишу давольно давно и ее размер уже перевалил за несколько тыс строк. Она изобилует...

Удаление отладочной информации
Как удалить отладочную информацию в Code Blocks?

Проблемка с отладочной платой CCM001V2
Имеется плата STEVOT-CCM001V2 с сенсорной клавиатурой и дисплеем: http://www.st.com/st-web-ui/static/acti ... pe=keyword Проблема в том,...

отладка без отладочной платы?
скачал последнюю Code Composer Studyo. Отладочных плат у меня нет. Создаю демку мигания светодиодом, выбираю в коннекшен &quot;Data...

Вопросы по отладочной плате Atmega32L.
Привезли из Китая отладочную плату за 900руб. http://item.taobao.com/item.htm?id=7639640541 Схема: Schematic.pdf Есть пара...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. Сразу отвечу: А в PvP с ним. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru