Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Удалить из текстового файла первую строку


Автор: Ibragim 24.12.2006, 05:21
Время суток добрый.
Часто возникает задача удалить в файле F: TextFile первую строку. Обычно перезаписывал файл без первой строки, да и все. Да вот задумался - неправильно как-то получается. Чтобы удалить одну строку, нужно извести кучу ресурсов (у меня в много потоков, плюс файлы не маленькие) - читаем файл в память, записываем опять на диск. Неужели у ОС нет средства сделать как-то попроще?

В общем, окончательная формулировка вопроса такая: Как с наименьшими (в разумных пределах smile )  затратами ресурсов машины удалить из существующего текстового файла  первую строку?

PS Кода, как обычно положено, не приведено ввиду специфики вопроса. smile 

Автор: W4FhLF 24.12.2006, 10:13
Ну варианта у тебя 3, можешь конечно f.read f.seek и таким образом искать первый перенос или аналогичными API, а потом сдвигать всё содержимое файла, но я бы не парился, заюзал бы TStringList:

Код

var
  s:TStringList;
begin
  s := TStringList.Create;
  s.LoadFromFile('E:\1.txt');
  s.Delete(0);
  s.SaveToFile('E:\1.txt');
end;


Затрудняюсь ответить как себя проявляет этот класс в этом случае, но до этого в подобных задачах TStringList показал себя как очень хорошо оптимизированный класс. 

Ещё в прицнипе можно использовать MMF, чуть позже пример приведу, бежать надоsmile


Автор: Alexeis 24.12.2006, 13:13
Цитата(Ibragim @  24.12.2006,  05:21 Найти цитируемый пост)
Как с наименьшими (в разумных пределах smile )  затратами ресурсов машины удалить из существующего текстового файла  первую строку?

Работать исключительно со StringList один раз загрузив в него файл и один раз сохранив все данные из него после того как все изменения будут произведены полностью.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)