Привет. Сегодня хочу рассмотреть построчную работу с файлом. Использовать будем стандартный паскалевский ввод/вывод: writeln и readln.
Например, перед нами задача: убрать от одного до десяти первых символов в каждой строке. Кстати, передо мной эта задача вчера реально встала, и я написал программу за 5 минут. Теперь и мы с тобой рассмотрим процесс написания.

Итак, сегодня будем писать со всеми прелестями delphi, читай с формой. Соорудим форму, поставим Edit1 и Edit2. Поставим OpenDialog1 и SaveDialog1, да и две кнопки для выбора файла в придачу.
Как это всё связать, думаю тебе известно. Но на всякий случай:

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    Edit1.Text:=OpenDialog1.FileName;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
    Edit2.Text:=SaveDialog1.FileName;
end;

Переназывать компоненты не станем.

Теперь нам нужно сделать выбор количества — от 1 до 10 символов (на выбор). Для этого я решил поставить TrackBar и Label так, что при изменении значения TrackBar менялось значение Label (от 1 до 10).

Вот так выглядит моя форма:
Form1

Теперь непосредственно парсинг:

procedure TForm1.SpeedButton3Click(Sender: TObject);
var
  f, o: TextFile;
  s: string;
  c: integer;
begin
  c:=TrackBar1.Position;
  if not FileExists(Edit1.Text) then begin
    ShowMessage('file not found');
    Exit;
  end;
  AssignFile(f, Edit1.Text);
  AssignFile(o, Edit1.Text);
  Reset(f); Rewrite(o);
  repeat
    Readln(f, s);
    Delete(s, 1, c);
    Writeln(o, s);
  until Eof(f);
  CloseFile(f); CloseFile(o);
  ShowMessage('ready!');
end;

Как видишь, мы объявили две переменные типа TextFile, строку, которую используем как буфер, и переменную c, в которую записываем количество символов, указанное в TrackBar1.
Теперь теоретическая часть.

Работа с текстовыми файлами

Чтобы связать переменную типа TextFile (или просто text) с конкретным файлом, мы используем процедуру AssignFile (аналог в паскале — assign). Первый параметр — переменная типа TextFile (частный случай file), вторая — адрес файла.
Теперь мы хотим определиться, что же мы собираемся делать с файлом: читать из него, или писать в него? Если читать, надо использовать процедуру Reset с единственным параметром — нашей переменной типа TextFile.
А если мы планируем писать в файл, нам нужна похожая процедура Rewrite. Но учти, что она стирает файл полностью, тем самым мы будем писать с чистого листа. Если файла нет, то она его создаст. Есть также процедура Append, которая открывает на запись, но не стирает, то есть мы можем дописывать в конец файла.
Также следует сказать про функцию Eof, которой мы также передаём TextFile. Она возвращает True только тогда, когда мы своим чтением достигли конца файла. Тем самым для построчного парсинга идеально подходит цикл repeat until.
Построчный ввод и вывод: нет ничего проще! ReadLn — читаем строчку, WriteLn — пишем. Естественно, для соответственно открытых файлов.
Процедура CloseFile закрывает файл, открытый нами с помощью Reset, Rewrite или Append. Однако наша переменная всё еще связано с адресом файла, и мы можем заново открыть на ввод/вывод без использования такого же AssignFile.

Процедура Delete

Процедура Delete удаляет из строки её часть. Синтаксис:

procedure Delete(var S: string; Index, Count: integer);

Передаём процедуре строку, место, с которого начинать удаление (Index), и количество символов для удаления.

Ну вот и всё на сегодня, скачать проект можешь по ссылке.

И, конечно, постовой. Если ты вдруг захотел прочитать про деньги, SEO и раскрутку, то заходи на блог iZombie.ru.