Зміна певного рядка в txt файлі

Зміна певного рядка в txt файлі.

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

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

А як змінити в існуючому файлі наприклад другий рядок.
Заздалегідь дякую.

Для порівняно невеликого файлу:

with TStringList.Create;
try
# XA0; LoadFromFile (fileReport);
# XA0; Strings [1]: = "Нове вміст 2-го рядка";
# XA0; SaveToFile (fileReport);
finally
# XA0; Free;
end;

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


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

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

Тебе що то бентежить?

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

відповідь:
ніяк, стандартні файлові системи не дозволяють зменшити розмір файлу без перезапису, можна обійтися без перезапису тільки в двох випадках, якщо нова другий рядок буде менше або дорівнює кількості символів старої.

тоді свій файл таким чином
Var
# XA0; FileNameRead. TextFile; // откриваеш тільки для читання
# XA0; 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
# XA0; B: = Ord (S [I]); // B. Byte
# XA0; Write (F, B);
End;
після не забуваємо другу копію відкритого # XA0; файлу закрити FileClose (F); Ще дуже великий плюс, що не треба кожен раз посля змін перечитувати рядки з початку, файл все-одно ізменяеться.
Буде щось незрозуміло піши на mail, а то я проїздом на сайті. Хоча респект сайту, бачив багато справжніх майстрів і цікавих рішень, може зареєструвалися

> Тебе що то бентежить?

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


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

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

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

І що ж це за такі кришталево чисті проксі сервера з ніразу не чищенням балками, порадьте;)


> Де такі файли (350 мб) відкриваються?

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


> І що ж це за такі кришталево чисті проксі сервера з
> Ніразу не чищенням балками, порадьте;)

Чи не тупи і не коси під дурника.