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

Вниз

Изменение определенной строки в txt файле.   Найти похожие ветки 

 
Андрей Пл   (2007-09-03 10:15) [0]

Мне нужно изменить определенную строку в текстовом файле, только вот не пойму как это сделать! Как заполнить новый файл я знаю, как добавить в конец существующего тоже понятно:

 assignFile(varFile, fileReport);
 if not FileExists(fileReport) then
   rewrite(varFile)
 else
   Append(varFile);
   . . . . . . . . .
 Writeln(varFile, str);

А как изменить в существующем файле например вторую строку???
Заранее спасибо.


 
Сергей М. ©   (2007-09-03 10:24) [1]

Для сравнительно небольшого файла:

with TStringList.Create;
try
 LoadFromFile(fileReport);
 Strings[1] := "Новое содержимое 2-й строки";
 SaveToFile(fileReport);
finally
 Free;
end;


 
Пользователь00005   (2007-09-03 10:27) [2]

var
 someStringList : TStringList;
begin
someStringList := TStringList.Create;
someStringList.LoadFromFile(fileReport);
someStringList[<номер строки>] := "Новое содержимое n-й строки";
someStringList.SaveToFile(fileReport);
someStringList.Free;
end;


 
Denis_ ©   (2007-09-03 11:13) [3]

можно построчно читать, записывая в др. файл. нужную строку заменить.Файл1 удалить, Файл2 переименовать. так я делал на turbo pascal 7


 
DiamondShark ©   (2007-09-03 14:29) [4]


> Сергей М. ©   (03.09.07 10:24) [1]


> Пользователь00005   (03.09.07 10:27) [2]

чтоб вам попался файл в 350 мегабайт.


 
Denis_ ©   (2007-09-03 14:38) [5]


> чтоб вам попался файл в 350 мегабайт.

текстовый?:D


 
Anatoly Podgoretsky ©   (2007-09-03 14:47) [6]

> Denis_  (03.09.2007 14:38:05)  [5]

Тебя что то смущает?


 
mrBOFH   (2007-09-07 15:40) [7]

Мне нужно изменить определенную строку в текстовом файле, только вот не пойму как это сделать! Как заполнить новый файл я знаю, как добавить в конец существующего тоже понятно:

Ответ:
никак, стандартные файловые системы не позволяют уменшить размер файла без перезаписи, можно обойтись без перезаписи только в двух случаях, если новая вторая строчка будет меньше или равна количеству символов старой.

тогда свой файл таким макаром
Var
 FileNameRead : TextFile;// открываеш только для чтения
 F : file of byte; //допускается FileName : File; при определенных директивах компиля
файло открывеш reset(f); //без параметров

в первом варианте открытого файла считываеш количество символов второй строчки, обрабатываеш строчку слующим образом:
ReadLn(F,S); считываем строчку
предполагаем что 1 строка="Задачка", вторая="111"
забиваеш новою строчку,добавляеш#10#13,а остальное забиваеш нулями или FF. Тоесть мы преобразовали строчку без нарушения структуры, получили строку вида S="111"+#10#13#0#0. Далее пишем в файл.
seek() - выставляеш позицию начало второй строки, в байтном варианте
For I:= 1 to Length(S) do
Begin
 B:=Ord(S[I]);// B : Byte
 Write(F,B);
End;
опосля не забываем вторую копию открытого  файла закрыть FileClose(F);Еще очень большой плюс, что не надо каждый раз посля изменений перечитывать строки с начала, файл все-равно изменяеться.
Будет что-то непонятно пишы на mail, а то я проездом на сайте. Хотя респект сайту, видел много настоящих мастеров и интересных решений, может зарегаюсь


 
Dib@zol ©   (2007-09-07 16:04) [8]

> Тебя что то смущает?

Базы данных в текстовом файле - явный моветон. Файловые архивы - тоже. Так где же такие монстры (брррр...) встречаются? Что-то я не могу себе вообразить. Война и мир и та в пару-тройку мегов текста и то упишется.


 
Denis_ ©   (2007-09-07 19:38) [9]


> Война и мир и та в пару-тройку мегов текста и то упишется.

Значит, "Война и мир" 150 раз скопировано и вставлено.Возникает вопрос к уважаемому Анатолию, где такие файлы(350 мб) открываются?


 
Anatoly Podgoretsky ©   (2007-09-07 21:46) [10]

> Denis_  (07.09.2007 19:38:09)  [9]

Логи прокси сервера, логи доступа к веб серверу и т.д.
Максимальный размер лога был 800 мб.


 
Dib@zol ©   (2007-09-07 21:51) [11]

И что же это за такие кристально чистые прокси сервера с ниразу не чищенными логами, посоветуйте ;)


 
grisme ©   (2007-09-08 04:28) [12]


> где такие файлы(350 мб) открываются?


тоталовский ЛистВьюер открывает файлы любого размера - он считывает их по небольшим кусочкам. HIEW так же, вроде бы, делает. Ну уйма еще примеров.


 
Anatoly Podgoretsky ©   (2007-09-08 13:20) [13]


> И что же это за такие кристально чистые прокси сервера с
> ниразу не чищенными логами, посоветуйте ;)

Не тупи и не коси под дурачка.



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

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

Наверх




Память: 0.5 MB
Время: 0.014 c
15-1189022089
Petr V. Abramov
2007-09-05 23:54
2007.10.07
Одумались...


2-1189324643
Dmitriy_
2007-09-09 11:57
2007.10.07
Как открыть сайт не во вкладке, а в новом окне IE?


15-1189409712
alsov
2007-09-10 11:35
2007.10.07
Большой набор данных в гриде


3-1180593182
DVM
2007-05-31 10:33
2007.10.07
Заполнить BLOB поле в таблице с помощью SQL запроса. Как?


9-1144146308
KiberKot
2006-04-04 14:25
2007.10.07
2Д исходник