Главная страница
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.021 c
15-1214989510
Slider007
2008-07-02 13:05
2008.08.17
С днем рождения ! 2 июля 2008 среда


6-1192086147
pathfinder
2007-10-11 11:02
2008.08.17
Работа с FTP-сервером через HTTP-proxy


15-1214399860
VingtQuatrieme
2008-06-25 17:17
2008.08.17
Единый Государственный Экзамен - это наступление американской


2-1215802076
Jimmy
2008-07-11 22:47
2008.08.17
ScrollBar


15-1214923574
pasha_golub
2008-07-01 18:46
2008.08.17
Отлов MemLeak ов