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

Вниз

Вопрос по текстовому файлу   Найти похожие ветки 

 
Jilian ©   (2005-02-06 18:52) [0]

У меня возние вопрос по текстовому файлу (F:TextFile), его содержание:
строчка1
строчка2
строчка3
А мне нужно привести его к виду:
строчка1
строчка3
Иными словами, как удалить какую-то определенную строчку из текстового файла и сместить оставшиеся. Раньше эту проблему решала копированием информации, очисткой файла и т.д Подскажите, есть ли более рациональные способы???
Заранее благодарю всех откликнувшихся!


 
default ©   (2005-02-06 18:56) [1]

строки у тебя фиксированной длины?
всё зависит от подхода то есть обязательно-ли физ-ое удаление строк


 
PZ   (2005-02-06 19:06) [2]

Var
 List : tStringList;
begin
 List := tStringList.Create;
 List.LoadFromFile("Text.txt");
 List.Delete(1);       // Удаляем строчку строчка2
 List.SaveToFile("Text.txt");
 List.Free;
end;


 
Anatoly Podgoretsky ©   (2005-02-06 19:37) [3]

Какой размер файла и надо удалять по номеру или по содержимому.


 
begin...end ©   (2005-02-06 21:50) [4]

> Jilian ©   (06.02.05 18:52)

> Раньше эту проблему решала копированием информации, очисткой
> файла и т.д Подскажите, есть ли более рациональные способы???

Ещё можно завести новый файл, и, читая старый, одновременно писать или не писать очередную строку в новый. Для текстовых файлов (если работать с ними именно как с текстовыми файлами TextFile) других способов нет. Это осложняется ещё и тем, что текстовые файлы являются файлами последовательного доступа.

С типизированными файлами будет немного проще, но они подойдут только для "коротких" строк.

А для небольших текстовых файлов вполне подойдёт [2].


 
Jilian ©   (2005-02-06 22:35) [5]

[4] Так в том-то и дело, что новый файл заводить, копировать, очищать... Это и ёжику понятно! А как сделать это более рационально?!
> Какой размер файла и надо удалять по номеру или по содержимому

Размер файла тут не имеет значение, а удаляется так: анализируется информация, и решается, удалять ли элемент из файла.
[2] Это тоже понятно, а попроще ничего нет???


 
default ©   (2005-02-06 22:50) [6]

Jilian ©   (06.02.05 22:35) [5]
можно не удалять строки
а помечать удалёнными
можно вести файл позиций и размеров строк
правда тут надо смотреть не накладней-ли этом в конечном итоге выйдет


 
Defunct ©   (2005-02-07 02:55) [7]

Jilian ©   (06.02.05 22:35) [5]

Рациональнее всего производить удаление в оперативной памяти компьютера, потому что оперативная память на порядок быстрее диска на котором лежит файл. Поэтому ответ [2] можно считать наилучшим из возможных решений. Только алгоритм надо немного подправить:

1. При старте программы загрузить файл с StringList.
2. В процессе работы добавлять и удалять строки StringList"a.
3. На выходе из программы сохранить StringList в тот же файл.


 
Slym ©   (2005-02-07 06:37) [8]

2 Defunct
>Рациональнее всего ... в оперативной памяти.
Оптимировать надо самое узкое место. А если узкое место малый размер оперативки + очень большой файл?
Лучше всего именно 2 файла. один читаем, другой пишем.


 
Kerk ©   (2005-02-07 06:46) [9]

Slym ©   (07.02.05 6:37) [8]
Лучше всего именно 2 файла. один читаем, другой пишем.


> + очень большой файл?

вот это будет архидолго


 
Jilian ©   (2005-02-07 22:37) [10]

Спасибо за полезные советы!!!


 
Jilian ©   (2005-02-11 00:06) [11]

Уважаемые мастера!!! А теперь такой вопрос, как удалить самую последнюю запись(элемент)??? Как удалить элемент с конца???


 
iskatel ©   (2005-02-11 00:15) [12]

List.Delete(List.Count)


 
Anatoly Podgoretsky ©   (2005-02-11 00:27) [13]

List.Delete(List.Count-1)



Страницы: 1 вся ветка

Текущий архив: 2005.02.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
1-1108073576
Bes
2005-02-11 01:12
2005.02.27
100 раз...передача данных в DLL


1-1108450650
Pashkerton
2005-02-15 09:57
2005.02.27
Динамическое TMemo


1-1107941413
Rusan
2005-02-09 12:30
2005.02.27
Как проверить наличие параметра в реестре


14-1107745364
Думкин
2005-02-07 06:02
2005.02.27
С Днем рождения! 7 февраля


9-1101493193
miek
2004-11-26 21:19
2005.02.27
GLScene: TerrainRenderer