Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


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 строки...
зы надеюсь файло не большое


Наверх

Титульная страница Поиск, карта сайта Написать письмо