Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Вниз

TMemo медленно работает   Найти похожие ветки 

 
Mr. D.   (2007-03-02 23:10) [0]

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

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


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


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

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


 
YurikGL ©   (2007-03-03 00:33) [2]

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


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


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

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


 
YurikGL ©   (2007-03-03 01:02) [4]


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

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


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


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

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


 
YurikGL ©   (2007-03-03 01:29) [6]


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

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

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


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


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

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


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

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


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


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

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


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

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

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


 
Belorus ©   (2007-03-03 10:46) [11]

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


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

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


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

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

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


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

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


 
Sam Stone ©   (2007-03-04 11:49) [15]


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

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


 
DrPass ©   (2007-03-04 15:15) [16]


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

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


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

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). Чтобы добавить парочку бызовых для нормальных редакторов вещей, мне пришлось так извращаться...


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

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


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


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

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



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.04 c
2-1176401844
ppcumax
2007-04-12 22:17
2007.04.29
Как получить HTML код страницы с помощью ClientSocket?


15-1175087034
Awex
2007-03-28 17:03
2007.04.29
Delphi for PHP - г... в массы??


2-1176375144
dracula
2007-04-12 14:52
2007.04.29
Как правильно синхронизировать thread?


2-1176131833
delphi_
2007-04-09 19:17
2007.04.29
проблемка с процедурой


2-1175699319
Ezorcist
2007-04-04 19:08
2007.04.29
Как дать своей программа приоритет выполнения?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский