Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 357

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!

Для ведения logа программы на этапе отладки использую Memo.
Вывожу туда информацию для себя. Но как выяснилось, когда выводишь много данных, это занимает приличное время и прога "тормозит". Какие можно использовать более быстрые приемы для этих целей?

Заранее спасибо!

Muratov Radik Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Muratov Radik (статус: Посетитель)
Вопрос отправлен: 3 ноября 2009, 13:16
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Muratov Radik!
вся проблема тормозов в том, что сложно добавить новую строку. по этой причине и тормозит. Ведь при добавлении новой строки, происходит выделение памяти под старый список строк плюс новую, всё копируются туда и старая память удаляется. понятно, что когда кол-во строк большое, это будет происходить очень долго. Конечно, алгоритм выделения памяти намного оптимальнее - память выделяется на перед не для одной строки, а под 16 (если память не изменяет).
Как решить данную проблему.
- не выводить все строки, а выводить последние 50-100. то есть при добавлении проверять, сколько строк уже есть, если их больше определённого числа, верхние удаляем.
- держать строки в памяти (в TStringList), а на экран выводить пачками. (тормозит в основном графическая часть Memo). Но теряется основная идея логов.
- более правильный вариант - выводить логи в файл. почему так лучше? а если программа зависнет, их можно будет почитать! плюс, можно написать некий парсер логов, который будет просматривать их и искать там. Почитайте мою статью О костылях - найдете всё что нужно.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 3 ноября 2009, 13:30
Оценка за ответ: 5

Комментарий к оценке: КАк всегда исчерпывающий ответ

Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 3 ноября 2009, 14:00; участников в обсуждении: 1.
Muratov Radik

Muratov Radik (статус: Посетитель), 3 ноября 2009, 13:42 [#1]:

И еще вопрос: а как в Дельфи сделать что-то типа #define DEBUG и потом проверять. И в зависимости от Debug или нет, соответственно вести лог или нет?
Muratov Radik

Muratov Radik (статус: Посетитель), 3 ноября 2009, 14:00 [#2]:

Нашел, надо было только статью до конца дочитать :)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:39
Выполнено за 0.03 сек.