Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TMemo медленно работает [D7, WinXP]


Mr. D. ©   (2007-03-02 23:10:00) 

Программа ведет некие сетевые логи, информации не так уж и много, но TMemo тем не менее ужасно тормозит. Информация в TMemo добавляется строками (Lines.add). И чем больше строк в TMemo, тем визуальнее она все больше тормозит.

Что можно тут поделать?


Германн   (2007-03-05 02:58:00) [1]


> Mr. D.   (03.03.07 15:04) [13]
>
> Вы о чем, господа! Да она сразу начинает тормозить, если
> строки быстро добавлять относительно. Причем, визуально
> кажется, что все время на скрол тратится, то есть добавляется
> строчка, а потом относительно медленно идет прокрутка к
> концу TMemo, может из-за этих эффектов красивой прокрутки
> все и тормозит - фиг знает.
>
> Но как-то хочется ускорить.
>

Лично я - о полном бреде использования TMemo и любых других визуальныхкомпонент в подобном случае.


zap8   (2007-03-05 01:44:00) [2]

1.Писать в файл
2.Читать в виртуальный ListView,  отображать только те строки которые "вмещаются" в канвас ListView при прокрутке


GrayFace   (2007-03-04 17:51:00) [3]

Sam Stone ©   (04.03.07 11:49) [15]
это чтобы кучу строк дополнительно сдвигать?)

На уровне VCL без разницы, куда вставлять.

Может использовать TListBox? Еще есть TSynEdit - возможно он подойдет.

P.S.
Mr. D.   (03.03.07 2:13) [8]
Круто, конечно, но я не верю, что нельзя побороть тормознутость TMemo.

Зря не веришь, Memo - очень кривая штука (точнее не Memo, а Multiline Edit, т.к. кривость именно в WinAPI). Чтобы добавить парочку бызовых для нормальных редакторов вещей, мне пришлось так извращаться...


DrPass   (2007-03-04 15:15:00) [4]


> Да она сразу начинает тормозить, если строки быстро добавлять
> относительно

Ну, вообще-то да - при добавлении новой строчки выполняется полная перерисовка всего содержимого. Для того и придуманы Memo.Lines.BeginUpdate/EndUpdate


Sam Stone   (2007-03-04 11:49:00) [5]


> а ты добавляй не в конец, а сверху

это чтобы кучу строк дополнительно сдвигать?)


Правильный Вася   (2007-03-03 15:26:00) [6]

а ты добавляй не в конец, а сверху


Mr. D.   (2007-03-03 15:04:00) [7]

Вы о чем, господа! Да она сразу начинает тормозить, если строки быстро добавлять относительно. Причем, визуально кажется, что все время на скрол тратится, то есть добавляется строчка, а потом относительно медленно идет прокрутка к концу TMemo, может из-за этих эффектов красивой прокрутки все и тормозит - фиг знает.

Но как-то хочется ускорить.


Правильный Вася   (2007-03-03 11:40:00) [8]

что-то мне припоминается у мемо были ограничения на 64 кб


Belorus   (2007-03-03 10:46:00) [9]

Миллионы не нужны. После того как там есть уже тысяч 100, добавление работает ужасно.


Anatoly Podgoretsky   (2007-03-03 07:54:00) [10]

> Mr. D.  (02.03.2007 23:10:00)  [0]

А сколько миллионов строк в мемо?


Германн   (2007-03-03 02:23:00) [11]


> Mr. D.   (03.03.07 02:13) [8]
>
> Круто, конечно, но я не верю, что нельзя побороть тормознутость
> TMemo.
>

Ну нет у TMemo другой тормознутости, кроме "визуализации многих тысяч строк"! А она, имхо, не поборима. Может тормоза где-то в другом месте твоей программы?


Mr. D.   (2007-03-03 02:13:00) [12]

Круто, конечно, но я не верю, что нельзя побороть тормознутость TMemo.


Германн   (2007-03-03 01:42:00) [13]


> YurikGL ©   (03.03.07 01:29) [6]
>
>
> > Это, имхо, перебор. А Бритва Оккама у меня всегда при
> себе.
> >  :)
>
> Каждому свое.... кто-то на файликах останавливатся, а кто-
> то сразу общее решение делает... :P
>
> з.ы. кстати, использование БД ИМХО, наиболее простой в реализации
> и логичный способ хранения логов...
>

Не буду спорить на таком уровне. Тут ты прав. И многие так и делают. Но на уровне сабжа это всё-таки перебор.


YurikGL   (2007-03-03 01:29:00) [14]


> Это, имхо, перебор. А Бритва Оккама у меня всегда при себе.
>  :)

Каждому свое.... кто-то на файликах останавливатся, а кто-то сразу общее решение делает... :P

з.ы. кстати, использование БД ИМХО, наиболее простой в реализации и логичный способ хранения логов...


Германн   (2007-03-03 01:22:00) [15]


> YurikGL ©   (03.03.07 01:02) [4]
>
>
> > Германн ©   (03.03.07 00:59) [3]
>
> Тогда уж можно и mySQL поставить и в него писАть...
>

Это, имхо, перебор. А Бритва Оккама у меня всегда при себе. :)


YurikGL   (2007-03-03 01:02:00) [16]


> Германн ©   (03.03.07 00:59) [3]

Тогда уж можно и mySQL поставить и в него писАть...


Германн   (2007-03-03 00:59:00) [17]


> YurikGL ©   (03.03.07 00:33) [2]
>
> Если визуально отображать не надо, можно использовать TStringList.
> .. Из него можно уже и в файл писать.
>

Лучше уж писАть в файл, а при необходимости просмотра из программы, загружать из файла. А то программа слетит и всё что накопилось в Стринглисте, как в прочем и в Мемо, пойдёт псу под хвост.


YurikGL   (2007-03-03 00:33:00) [18]

Если визуально отображать не надо, можно использовать TStringList... Из него можно уже и в файл писать.


Плохиш   (2007-03-02 23:16:00) [19]


> Что можно тут поделать?

Пиши лог в файл...


Наверх

Титульная страница Поиск, карта сайта Написать письмо