Хочу написать програмку для удаления определенных строк в lo

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
ceval
Сообщения: 1
Зарегистрирован: 04 мар 2005, 15:16
Откуда: Минск
Контактная информация:

Хочу написать програмку для удаления определенных строк в log-файле. Подскажите какие компоненты нужно использывать.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

А зачем пользоваться какии либо компонентами? Можно просто открыть файл, найти нужную строку и удалить. Всё делается с помощью Win32 API.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Можно еще проще: никакого 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 и т.д.
YurikGL
Сообщения: 142
Зарегистрирован: 16 фев 2005, 21:54
Откуда: Уфа
Контактная информация:

Если события в логе разделены переносами строк, то проще всего делать
TStringList.loadFromFile
и работать с каждой записью отдельно
Там и удалять можно построчно.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Плохой совет про TStringList!

Логи снимаемые в эксплуатационном режиме как правило имеют очень большой размер. Попробуйте загрузить так 100М.

TStringList грузит строки в память, а память отъедает из кучи.
YurikGL
Сообщения: 142
Зарегистрирован: 16 фев 2005, 21:54
Откуда: Уфа
Контактная информация:

>Naeel Maqsudov
>Куратор

Про большой размер - согласен...
Если скорость критична, то вроде потоки работают с файлами быстрее, чем assign...
Ответить