Форум: "Начинающим";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];
ВнизИзменение определенной строки в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.07 c