![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 13.05.2007
Сообщений: 60
|
![]()
Здравствуйте. Программа занимается определенными измерениями, результаты выводятся в RichEdit, строки добавляются раскрашенные (поэтому собственно и RichEdit). Измерения идут непрерывно (пока не остановишь). Проблема в том, что вывод на экран отнимает время, т.е. если делать без вывода, то измерения проходят гораздо быстрее. Однако вывод на экран в процессе измерения нужен, причем с цветными строками. Сейчас сделано так: если в RichEdit больше 4000 строк, то первые 255 строк удаляются (потому что с большим объемом текста вывод тормозит сильно). Если нужен весь текст, то предусмотрена запись в файл. Возникла необходимость ускорить измерения, а также желательно увеличить буфер (не 4000 строк, а больше, лучше без ограничений). В связи с этим я думаю создать еще один RichEdit в памяти и во время измерений вывод делать в него (без удалений), а в тот, что на форме выводить только последние строки, которые влезают в экран. А если измерения остановлены, то из RichEdit'а в памяти перекидывать в RichEdit на форме (чтобы можно было просмотреть результаты).
Вопрос в том, правильное ли это решение и как эффективнее это сделать. Меня беспокоит, не будет ли перекидывание большого текста из RichEdit'а в памяти в RichEdit на форме слишком долгим и что будет, когда объем текста станет совсем уж большим (как это отразится на памяти и производительности). |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 03.01.2014
Сообщений: 2,870
|
![]() Цитата:
Пусть измерения выполняются в отдельном потоке и помещают результаты в какой-нибудь буфер (БД, временный файл и т.д.), а поток UI просто будет периодически обновлять данные RichEdit из него. Это просто, как один из возможных вариантов. |
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 27.10.2014
Сообщений: 594
|
![]() |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 13.05.2007
Сообщений: 60
|
![]()
BeginUpdate/EndUpdate используются. Измерения (и соответственно вывод) происходят блоками. После каждого блока я вывожу время измерения. Так вот если делать без вывода, то время одно и то же, а если с выводом, то после каждого блока время все больше и больше (пропорционально количеству текста).
|
![]() |
![]() |
![]() |
#5 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
А нам и без RichEdit'ов неплохо живётся.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 13.05.2007
Сообщений: 60
|
![]()
Идея хорошая, но пожалуй не подойдет. Там запускают измерения и смотрят на экран. Бывает так, что допустим видят строки определенного цвета и останавливают, чтобы посмотреть где брак. С многопоточностью будет несинхронизировано, т.е. измерение давно пройдет, а результат только выведется.
Проект довольно сложный, да еще не мой, я не готов пока RichEdit менять на ListBox. |
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 03.01.2014
Сообщений: 2,870
|
![]() Цитата:
Просто как варианты... |
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с большим количеством текста в String иTextbox | Дмитрий999 | Visual C++ | 0 | 20.02.2012 20:07 |
Загрузка в RichEdit текста из файла, и получение его из RichEdit | Byurrer | Общие вопросы C/C++ | 1 | 09.04.2011 10:17 |
работа с большим объемом данных | Ckif | Microsoft Office Excel | 1 | 14.09.2010 17:05 |
Форматирование текста в RichEdit. | Air | Общие вопросы Delphi | 2 | 03.03.2008 15:15 |