Страница 1 из 1
Хочу написать програмку для удаления определенных строк в lo
Добавлено: 04 мар 2005, 23:09
ceval
Хочу написать програмку для удаления определенных строк в log-файле. Подскажите какие компоненты нужно использывать.
Добавлено: 09 мар 2005, 11:44
Romeo
А зачем пользоваться какии либо компонентами? Можно просто открыть файл, найти нужную строку и удалить. Всё делается с помощью Win32 API.
Добавлено: 09 мар 2005, 20:12
Naeel Maqsudov
Можно еще проще: никакого WinAPI.
Код: Выделить всё
var
fi,fo:text;
s:string;
begin
assign(fi,"c:\111.log");
reset(f);
assign(fo,"c:\111.filtered.log");
rewrite(f);
while not eof(fi) do begin
readln(fi,s);
if not <s подлежит удалению> then writeln(fo,s);
end;
close(fi);
close(fo);
end.
Правда, начиная с D5 идентификаторы assign и некоторые другие перекрыты в других стандартных модулях, подгружающихся позже, поэтому возможно прийдется везде писать system.assign, system.close и т.д.
Добавлено: 09 мар 2005, 20:51
YurikGL
Если события в логе разделены переносами строк, то проще всего делать
TStringList.loadFromFile
и работать с каждой записью отдельно
Там и удалять можно построчно.
Добавлено: 09 мар 2005, 21:38
Naeel Maqsudov
Плохой совет про TStringList!
Логи снимаемые в эксплуатационном режиме как правило имеют очень большой размер. Попробуйте загрузить так 100М.
TStringList грузит строки в память, а память отъедает из кучи.
Добавлено: 10 мар 2005, 22:03
YurikGL
>Naeel Maqsudov
>Куратор
Про большой размер - согласен...
Если скорость критична, то вроде потоки работают с файлами быстрее, чем assign...