Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.17;
Скачать: CL | DM;

Вниз

Простейший вопрос по текстовым файлам   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
2-1215884192
savyhinst
2008-07-12 21:36
2008.08.17
Маска


4-1194839861
Potato
2007-11-12 06:57
2008.08.17
Настройка тарелки на спутник, измерение сигнала качества


2-1216055751
QMike
2008-07-14 21:15
2008.08.17
нарисовать на канве TImage


15-1214545283
Регвин
2008-06-27 09:41
2008.08.17
посоветуйте хороший учебник по DELPHI


15-1211457036
Kerk
2008-05-22 15:50
2008.08.17
Идеальная потрепаловка. Какой она должна быть?