ПШвИ - ПЕРВЫЙ ШАГ в ИНТЕРНЕТ

МБОУ БСОШ №1 

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта
ПУБЛИКАЦИИ / ПРОГРАММИРОВАНИЕ / Запись/дозапись данных в текстовый файл с применением файлового потока TFileStream.

Запись/дозапись данных в текстовый файл с применением файлового потока TFileStream.

Печать

Запись/дозапись данных в текстовый файл с применением файлового потока TFileStream.

 

 

procedure TForm1.Button1Click(Sender: TObject);
const
  Fn = 'file.txt';
var
  FileName : String;
  S : AnsiString;
  Fs : TFileStream;
begin
  //Полный путь к файлу с именем Fn, который расположен в той же папке,
  //в которой лежит исполняемый файл программы.
  FileName := ExtractFilePath(ParamStr(0)) + Fn;
  try
    //Если файл уже существует, то открываем его в режиме чтения/записи.
    //Если файл не существует, то создаём его и открываем в режиме чтения/записи.
    //fmShareDenyWrite - запрет на запись в файл из других процессов (приложений).
    if FileExists(FileName) then
      Fs := TFileStream.Create(FileName, fmOpenReadWrite, fmShareDenyWrite)
    else
      Fs := TFileStream.Create(FileName, fmCreate, fmShareDenyWrite);
    //Переводим файловый указатель в конец файла.
    Fs.Position := Fs.Size;
    //Если файл не пуст, и в конце файла нет знаков конца или перевода строки,
    //то добавляем в конец файла знаки #13#10. - Чтобы отделить новое
    //содержимое от прежнего.
    if Fs.Size > 0 then begin
      //Задаём размер ANSI строки в 1 ANSI символ.
      SetLength(S, 1);
      //Файловый указтель размещаем перед последним символом (байтом) файла.
      Fs.Position := Fs.Position - 1;
      //Читаем в строку последний ANSI символ (байт) файла.
      Fs.Read(S[1], 1);
      //Если прочитанный символ не является знаком конца или перевода строки,
      //то записываем в конец файла пару знаков #13#10.
      if not (S[1] in [#10, #13]) then begin
        S := #13#10;
        Fs.Write(S[1], 2);
      end;
    end;
    //Добавляем в конец файла новое содержимое.
    Memo1.Lines.SaveToStream(Fs);
  finally
    FreeAndNil(Fs);
  end;
end;

 

 

Добавить комментарий


Защитный код
Обновить


Top.Mail.Ru Яндекс.Метрика
iikt  TIiIKT  ikt24.org.ru  gerb gerb