|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.05.2010, 11:10 | #1 |
Пользователь
Регистрация: 30.06.2009
Сообщений: 39
|
Проблемы с PerformanceGraph в Borland C++
У меня возникла проблема, я делаю вот так:
Form1->PerformanceGraph1->DataPoint(clWhite,15); Form1->PerformanceGraph1->Update(); Sleep(100); Ну это все естественно в потоке либо просто в функции делаю, без разницы и так и так пробовал, короче проблема в том что после нескольких секунд(каждый раз разный промежуток времени) PerformanceGraph подвисает и висит-висит. Слееп пробовал по разному ставить. Помогите пожалуйста. Срочно надо. |
05.05.2010, 11:13 | #2 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
проблема в самой функции Sleep(), она сильно грузит систему, если действия происходят в цикле, тогда точно из-за нее
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
05.05.2010, 11:19 | #3 |
Пользователь
Регистрация: 30.06.2009
Сообщений: 39
|
Да, и еще когда закрываешь программу, то выдает ошибку:
Project ....\имя проекта.exe faulted with message: 'access violation at 0x5060b7f4: read of address 0x000001f0'. Process Stopped. Use step or run to continue. На всякий случай код программы всей: Код:
Последний раз редактировалось Stilet; 17.05.2010 в 08:36. |
05.05.2010, 11:27 | #4 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
почему по нубски? таймер это новый поток, а Sleep тормозит текущий поток
|
05.05.2010, 11:48 | #5 |
Пользователь
Регистрация: 30.06.2009
Сообщений: 39
|
Спасибо за помощь. А то я весь интернет перегуглил, и ничего не нашел.)
Блин. Как только программу какую то запускаю в системе, так моя программа подвисает сразу и висит. Последний раз редактировалось Stilet; 17.05.2010 в 08:36. |
05.05.2010, 12:26 | #6 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
WaitForSingleObject(NULL,time); вот еще одна функция задержки экрана, попробуй ее, хотя тормоза связанные с запуском других программ уже не от задержки экрана...
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
05.05.2010, 12:35 | #7 |
Пользователь
Регистрация: 30.06.2009
Сообщений: 39
|
Не помогает, паузы нет. вот текст программы:
Код:
Последний раз редактировалось Stilet; 17.05.2010 в 08:37. |
05.05.2010, 12:43 | #8 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
Скинь весь проект, не поленюсь сегодня вечером посмотрю...
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
05.05.2010, 12:51 | #9 |
Пользователь
Регистрация: 30.06.2009
Сообщений: 39
|
ну это код второй программы которая читает из анономного канала данные. можно чтение просто в коммент поставить а строки можно так сделать, все равно висит:
Код:
Помогите, что за глюки то с этим графиком. Последний раз редактировалось Stilet; 17.05.2010 в 08:37. |
14.05.2010, 23:15 | #10 |
Заснувший
Форумчанин
Регистрация: 13.03.2009
Сообщений: 213
|
Попробовал откомпилировать ваш код, график действительно завис в отладчике вылезло Access Vialation, после беглого просмотра ассемблерного кода выяснилось, что через eax в функцию DataPoint должен был поступить некий не нулевой параметр, который потом используется для адресации памяти. Насколько я знаю у Delphi через eax передается указатель Self (или Sender или ещё как, короче это как то связано с объектом вызвавшим функцию). Значит в определенный момент времени (заранее не известный) указатель на PerformanceGraph1 становиться недоступным, вместо него передается нулевое значение и график зависает...
Отсюда вывод: Виснет скорее всего из за того, что поток сделан через API ф-ю, а надо создавать Thread Object. Если хотите делать через API, то можно в потоке отсылать окну сообщения и в обработчике этих сообщений рисовать новые точки на графике... А вообще самый рульный(простой) способ - таймер... EDIT.......................... Виснет и в Thread Object, значит был не прав... Последний раз редактировалось Виталий Серов; 15.05.2010 в 07:23. Причина: чтоб не мучится юзай таймер |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
не могу запустить ехешник ,Borland 5 и Borland 6 | error_13 | Общие вопросы C/C++ | 0 | 31.01.2010 14:04 |
Проблемы с Borland C++ 3.1 | Creeper | Помощь студентам | 0 | 25.04.2009 18:09 |
проблемы со связным списком с++ (Borland) | adwaer | Помощь студентам | 0 | 15.04.2009 16:23 |
проблемы со связным списком с++ (Borland) | adwaer | Помощь студентам | 0 | 15.04.2009 16:22 |