![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 28.08.2011
Сообщений: 6
|
![]()
Здравствуйте!
Работаю с Delphi 7, Windows 7 В ходе решения вычислительной задачи промежуточные данные выводятся в виде строк в Memo. Все хорошо, но стоит только перейти от своей программы к другому приложению, например браузеру, то вывод строе в memo прекращается, хотя решение задачи продолжается. При щелчке по форме выдается сообщение, что приложение не отвечает. После окончания все данные сразу выдаются в memo. Вообще, стоит только задаче потерять фокус и все повторяется. Прошу помочь, так как задача длительная и пользователь должен видеть ход процесса. |
![]() |
![]() |
![]() |
#3 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 28.08.2011
Сообщений: 6
|
![]()
строк може быть много, от 5 до 20 тысяч
|
![]() |
![]() |
![]() |
#5 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
![]()
Слишком много. Избавляйся от такого количества. Либо лог файл, либо пересмотр информативности строк, и выкидывание неинформативных излишков. И как я понимаю при потере фокуса программа не "вешается", а скидывается в файл подкачки. Со всеми вытекающими. Диспетчер задач глянь, сколько памяти кушает программа.
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 28.08.2011
Сообщений: 6
|
![]()
[QUOTE=doktor255;1342801]Слишком много. Избавляйся от такого количества.
Может быть и так. Но я пробовал просто выводить строки по одной в Label, когда последующая строка просто затирает предыдущую, информируя пользователя и следующем шаге. Эфффект тот же самый. Более того, прогресс хода решения задачи отображал только в ProgressBar, однако и тогда потяря фокуса вызывала зависание полоски прогресса, но сама задача продолжалась и завершалась успешно. |
![]() |
![]() |
![]() |
#7 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
![]()
Скорее всего скорость получения данных слишком высока. Необходимо обрабатывать данные не на прямую, а использовать буферизацию. Вообще для принятия какого либо толкового решения по вопросу нужно смотреть непосредственно сам код.
P.S. Положи весь лог в StringList, а в memo выведи первые 10 строк, и выводи оставшиеся по мере скроллинга. Гарантированно не будет подвисать. Последний раз редактировалось doktor255; 18.02.2014 в 18:33. |
![]() |
![]() |
![]() |
#8 |
Регистрация: 28.08.2011
Сообщений: 6
|
![]()
Подскажите, где прочитать про буферизацию, потому что кажется вы точно уловили суть моей проблемы.
|
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
![]()
[QUOTE=oleg_swimmer;1342806]
Цитата:
1) Один выполняет рассчеты, а результат с помощью критической секции заносит в переменную 2) Другой поток(таймер) через, скажем 100 или 1000мс обновляет информацию из тех переменных? |
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 28.08.2011
Сообщений: 6
|
![]()
[QUOTE=STRELOK-2007;1342815]Спасибо, разберусь, переделаю. Спасибо за поддержку.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оптимизация (сокращение) кода решения задачи #46 c acmp.ru - вывод числа E с заданной точностью | Poma][a | Паскаль, Turbo Pascal, PascalABC.NET | 47 | 05.07.2013 23:50 |
Delphi.Чтение файла в Memo, вычисление, добавление строк в Memo | antonio_sk | Помощь студентам | 0 | 26.04.2013 18:01 |
Алгоритм решения задачи | snpccvs | Помощь студентам | 8 | 13.02.2012 22:50 |
Решения задачи* | asso | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 11.12.2011 08:29 |
вывод решения в файл, с++ | DimR | Помощь студентам | 1 | 31.10.2011 20:49 |