mpro Опубликовано 30 апреля, 2015 Опубликовано 30 апреля, 2015 Доброе время суток, уважаемые коллеги! Столкнулся с неприятной проблемой при работе с TMemo, а именно - катастрофическа падение производительности при работе с компонентом TMemo. Баг отлично наблюдается при длине текста ~ 300 строк, платформа - win32, стили без изменений, все события компонента - пустые. Ососбенно медленно работает выделение текста (Ctrl-A отрабатывает несколько секунд). Сталкивался ли кто-то с такой проблемой и известно ли её решение? Возможно для вывода большого количества текста существует более подходящий (может быть сторонний) компонент? Цитата
0 sviat9440 Опубликовано 30 апреля, 2015 Опубликовано 30 апреля, 2015 У меня более 2000 строк, работает как часы. а вот на андроиде такие же проблемы. Цитата
0 mpro Опубликовано 30 апреля, 2015 Автор Опубликовано 30 апреля, 2015 У меня более 2000 строк, работает как часы. а вот на андроиде такие же проблемы. Спасибо за ответ, он заставил меня заняться эксперементами. Проблема оказлась ещё интереснее. Если вставить/набрать текст в мемо - то всё обрабатывается нормально. Если программа производит запись в то же Memo программно (из другого потока), то возникает парадоксальная ситуация: с набранным текстом - всё ок. При попытке выделить текст сгенирированный программно программа начинает тормозить. Сам бы не поверил, если бы не увидел своими глазами. Цитата
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 30 апреля, 2015 Модераторы Опубликовано 30 апреля, 2015 При попытке выделить текст сгенирированный программно программа начинает тормозить. в это время "другой" поток остановлен? Цитата
0 sviat9440 Опубликовано 30 апреля, 2015 Опубликовано 30 апреля, 2015 У меня более 2000 строк, работает как часы. а вот на андроиде такие же проблемы. Спасибо за ответ, он заставил меня заняться эксперементами. Проблема оказлась ещё интереснее. Если вставить/набрать текст в мемо - то всё обрабатывается нормально. Если программа производит запись в то же Memo программно (из другого потока), то возникает парадоксальная ситуация: с набранным текстом - всё ок. При попытке выделить текст сгенирированный программно программа начинает тормозить. Сам бы не поверил, если бы не увидел своими глазами. возможно проблема в том, что данные мемо, хранятся в озу. но это мои предположения. прийду домой, займусь експериментами Цитата
0 mpro Опубликовано 30 апреля, 2015 Автор Опубликовано 30 апреля, 2015 При попытке выделить текст сгенирированный программно программа начинает тормозить. в это время "другой" поток остановлен? Провёл эксперимент с остановкой потока. Результат тот же. Часть текста - копируется и прокручивается нормально, часть - нет. Обмен идёт через Synchronize. Цитата
0 sviat9440 Опубликовано 30 апреля, 2015 Опубликовано 30 апреля, 2015 (изменено) А если тот же текст из файла загрузить в пустое мемо, то как? Изменено 30 апреля, 2015 пользователем sviat Цитата
0 mpro Опубликовано 30 апреля, 2015 Автор Опубликовано 30 апреля, 2015 (изменено) Последовательность действий: 1. запускаем основное приложение. 2. запускаем второй поток. 3. второй поток пишет в мемо 4. второй поток завершает работу с мемо 5. (?) опцинонально второй поток завершает работу эффект наблюадется MemoLog.Lines.SaveToFile('test.log'); MemoLog.Lines.LoadFromFile('test.log'); эффект пропадает. С пустым мемо - всё ок. Эффект также не наблюдается. Изменено 30 апреля, 2015 пользователем mpro Цитата
0 mpro Опубликовано 30 апреля, 2015 Автор Опубликовано 30 апреля, 2015 Ошибку нашёл. Ошибка оказалась тривиальной. Ожидаемая семантика поведение несколько отличалась от того, что было на самом деле. При добавлении текста с переносами, текст попадает в FLines как одна строка (FLines.Count = 1). Это приводит к очень странной работе всего компонента. Сказать баг это или фича сложно. Цитата
Вопрос
mpro
Доброе время суток, уважаемые коллеги!
Столкнулся с неприятной проблемой при работе с TMemo, а именно - катастрофическа падение производительности при работе с компонентом TMemo.
Баг отлично наблюдается при длине текста ~ 300 строк, платформа - win32, стили без изменений, все события компонента - пустые.
Ососбенно медленно работает выделение текста (Ctrl-A отрабатывает несколько секунд).
Сталкивался ли кто-то с такой проблемой и известно ли её решение?
Возможно для вывода большого количества текста существует более подходящий (может быть сторонний) компонент?
8 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.