Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1189070224
MaxIvanych
2007-09-06 13:17
2007.10.07
Matlab и Delphi


6-1171007451
inex
2007-02-09 10:50
2007.10.07
работа с IdFTP


15-1189061708
infom
2007-09-06 10:55
2007.10.07
Нужна простенькая программа для тестирования студентов.


11-1172737932
Trible
2007-03-01 11:32
2007.10.07
TKOLmdvXLGrid


15-1189267018
УАув
2007-09-08 19:56
2007.10.07
Десятичный логарифм





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский