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 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.