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