![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Простейший вопрос по текстовым файлам
Gringoire © (2008-07-10 03:56:00)Господа, подскажите, как прочесть строку из текстового файла в переменную (здесь ReadLn вполне подходит, на это можно не отвечать), и, после прочтения этой строки удалить ее из файла?
пример:
*Файл содержит
слудующие
стоки*
После прочтения строки, переменной присваивается значение "Файл содержит", а в файле остается:
*слудующие
стоки*
Заранее спасибо.
brother (2008-07-11 05:31:00) [1]> [15] Gringoire (10.07.08 20:43)
зы адресс почты прикольный ;))))
Gringoire (2008-07-10 20:43:00) [2]Спасибо, ребят. Разобрался. Всего вышенаписанного мне вполне хватило. Прогу реализовал.
Всем спасибо. Всем хорошего настроения и продуктивного дня.
brother (2008-07-10 12:34:00) [3]похоже на логи, которые просматриваются и потом удаляются... но такой подход - бред
Dennis I. Komarov (2008-07-10 11:01:00) [4]Вобщем ИМХО надо пересмотреть с самого начала задачу. Файл (текстовый) тут не слишком подходит.
palva (2008-07-10 10:00:00) [5]Если постоянно нужно какие-то строки удалять из файла или вставлять в него, то лучше использовать не файлы, а какую-нибудь простенькую СУБД.
Правильный^Вася (2008-07-10 09:44:00) [6]
> User (10.07.08 09:39) [7]
try-finally забыл
Рамиль (2008-07-10 09:43:00) [7]
> Устанавливаем поинтер на ToPos и читаем хвостик.
Куда читаем, в память? А если большой, то все равно писать конец в другой файл. С полным переписыванием надежнее ;)
Вообщем надо по ситуации смотреть. Но в общем случае читать хвостик быстрее, конечно.
Правильный^Вася (2008-07-10 09:43:00) [8]TStringList.LoadFromFile
TStringList.Delete(0)
TStringList.SaveToFile
tesseract (2008-07-10 09:40:00) [9]
> Устанавливаем поинтер на FromPos и записываем "хвостик".
>
> Корректируем размер.
Если файл небольшой, проще и быстрее будет через память, и полностью файл сбрасывать на диск.
User (2008-07-10 09:39:00) [10]
var
t: TStringList;
begin
t:= TStringList.Create; // создаем -
t.LoadFromFile('test.txt');
t.Delete(0);
t.SaveToFile('test.txt');
t.Free
... единственное, что нужно - файл должен быть текстовый (с концами строк), и нужно ввести проверку количества строк ...
Riply (2008-07-10 09:38:00) [11]> [4] Рамиль © (10.07.08 08:55)
> В файле нельзя удалить произвольные байты, можно только обрезать с конца.
> То бишь два варианта:
> 1. Загрузить все в память, сохранить в файл нужное.
> 2. Переписать в другой файл нужное, стереть старый, переименовать новый.
Пусть надо удалить с FromPos до ToPos
Открываем файл. Устанавливаем поинтер на ToPos и читаем хвостик.
Устанавливаем поинтер на FromPos и записываем "хвостик".
Корректируем размер.
brother (2008-07-10 09:30:00) [12]> 2. Переписать в другой файл нужное, стереть старый, переименовать
> новый.
паранойя?) а вообще да)
Рамиль (2008-07-10 08:55:00) [13]В файле нельзя удалить произвольные байты, можно только обрезать с конца.
То бишь два варианта:
1. Загрузить все в память, сохранить в файл нужное.
2. Переписать в другой файл нужное, стереть старый, переименовать новый.
brother (2008-07-10 05:34:00) [14]считываешь построчно в tstrings
удаляешь из tstrings.delete(0) как то так... делфи под рукой нет( посмотри справку по нему...
Gringoire (2008-07-10 05:30:00) [15]Ну, так по идее, так и получается (возможно, изначально не точно объяснил). Файл действительно не очень большой (до 1.5 Мб).
Весь вопрос в том, что я не знаю, как эту строку (первую) убрать (((
brother (2008-07-10 05:07:00) [16]> после прочтения этой строки удалить ее из файла?
не лучше перезаписать без этой строки...
1. считываем все строки
2. 1 строку в переменную
3. перезаписываем файл без 1 строки...
зы надеюсь файло не большое