![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Hroft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 20.10.2003 Где: Москва Репутация: нет Всего: 3 |
Господа, подскажите пожалуйста, как мне быть: на BC++B 6.0 есть довольно большая программа (конвертер базы данных), в которой вся работа выполняется в одной функции.
При клике на кнопку эта функция запускается. Соответственно, программа виснет, пока она не завершится. Как мне сделать, чтобы хоть какое-то действие (клик на кнопку СТОП, например) обрабатывалось? Не советуйте запихать эту функцию в отдельный поток, нельзя этого сделать (или я чего-то не понимаю, проблема в Synchronize(), которой надо вызывать все обновления формы, не хочу я подключать в изолированный файлик vcl.h). Можно ли сделать, чтобы у меня создавался поток, который показывал бы еще одну формочку с единственнной кнопкой СТОП? |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Похоже ты действительно чего-то не понимаешь. Советовать не буду, но обычно эта задача решается так: эта функция запихивается в отдельный поток. И всё. Никаких проблем. Тем более в Синхронайз(). |
|||
|
||||
| Borisff2003 |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 26.2.2004 Где: г. Уфа Репутация: 1 Всего: 1 |
Application->ProcessMessages(); Эта функция позволяет программе обрабатывать сообщения. Только после каждого цикла пользоваться не советую существенно замедляется работа, сделай опытным путем чере n итераций . или за временем следи гдето глобально
в бооольшом цикле
в обработчике кнопки
--------------------
Лень, двигатель прогресса |
||||||
|
|||||||
| Hroft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 20.10.2003 Где: Москва Репутация: нет Всего: 3 |
Огромное спасибо, это именно то, что нужно.
А насчет моего непонимания скажу так: попробуй запихать в <потомок TThread>::Execute вызов функции, которая бы через абстрактный интерфейс вызывала функции по обновлению прогресс бара, получала доступ к базе данных и т.д. Может быть, заработает. У меня почти неделю так работало, а потом немного подправил, и все сдохло, какие-то CoInitialize невызванные полезли... |
|||
|
||||
| Олег М |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Дык, ёлы-палы, пробовал.
Во-первых надо было CoInitializeEx вызывать. А во вторых код проверь. |
||||
|
|||||
| Hroft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 20.10.2003 Где: Москва Репутация: нет Всего: 3 |
ЗАЧЕМ мне ее вызывать? И что проверить в коде?
|
|||
|
||||
| Олег М |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Если ты использовал OLE то надо было
Ошибки. Там они есть, раз всё сдохло |
||||
|
|||||
| Hroft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 20.10.2003 Где: Москва Репутация: нет Всего: 3 |
Не использую я оле явно. А библиотека должна сама об этом заботиться.
А ошибки я как раз исправил - поэтому неправильный код перестал работать. |
|||
|
||||
| Олег М |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
А такое ощущение что явно пользуешься, иначе откуда
А до того, как исправил он работал? Может ты их понаделал, ошибки? |
||||||
|
|||||||
| Hroft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 20.10.2003 Где: Москва Репутация: нет Всего: 3 |
Ладно, хватит. Бестолковое и беспредметное препирание. Просто спасибо Borisff2003.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |