Главная страница
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.037 c
3-1107180484
YK
2005-01-31 17:08
2005.02.27
проблемы с DBNavigator


14-1108029447
Mac
2005-02-10 12:57
2005.02.27
Помогите, кто знает. Скопировать виртуальный образ проги.


8-1100190383
redlord
2004-11-11 19:26
2005.02.27
цвет точки в заданных координатах Timage


14-1107978650
Mike Kouzmine
2005-02-09 22:50
2005.02.27
Какой генератор отчетов сегодня используют умные люди?


14-1107771563
Тульский
2005-02-07 13:19
2005.02.27
Струйник