-
В программе ведется лог (TStringList), который периодически сохраняется на диск. Лог может стать большим, и поэтому иногда его надо чистить.
Делаю так: if (Length(LogList.Text) > 1000000) then LogList.Clear;
Есть быстрее способ узнать размер лога, чем Length?
Спасибо.
-
LogList.count
-
Надписать метод TStringList.Add не предлагать ?
Я удивляюсь, какой же уровень у программистов, плинтус Эверестом кажется.
-
на фиг вообще нужен такой лог, который можно прочитать/разобрать только если все хорошо, периодически, а если скажем критический сбой в программе или ее несанкционированно закрыли то лога и нет... остался в памяти порушенной памяти.
-
> Игорь Шевченко © (21.11.17 10:37) [2] > > Надписать метод TStringList.Add не предлагать ? > > Я удивляюсь, какой же уровень у программистов, плинтус Эверестом > кажется. >
Уровень программистов как раз "на уровне". :) Я правда в последнее время сужу только по программистам микроконтроллеров. Но и тут - этот вопрос явно вопрос малограмотного. Но всё же не троешника. Он пытается написать код сам.
-
Ничего он писать не пытается. Это обычное тестовое задание.
-
Внутри TStringList.Text из всех строк собирается одна длинная строка, что вызывает перевыделение памяти. поэтому
int i,Len;
Len:=0;
for i:=0 to LogList.Count-1 do
Len:=Len+Length(LogList[i]);
может быть быстрееж
-
Когда я был ещё студентом и начал задумываться об ведении логов... И разумеется гораздо интереснее "сделать своё", чем прикручивать какие-то там "лог-движки"... Одним из первых вариантов было нечто подобное. Что тут такого-то? Вот только в таком варианте быстро нашлось множество недостатков: жуткое пожирание памяти, замедление работы программы, при серьёзных ошибках нужной информации в логе не оказывается.
Вот подумайте - зачем вам держать в оперативке столько строк? И тратить время на их пересохранение (ведь файл будет перезаписываться полностью с нуля)? Надо держать открытый файл на диске и при поступлении данных просто сразу в него дописывать. А "очищать лог" вообще не нужно. Разве что для удобства сделать метод мол "освободить файл лога, переименовать его, создать новый пустой файл со старым именем".
|