Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Добавление строки к файлу

Delphi , Файловая система , Файлы

Добавление строки к файлу

Из FAQ`а по Quake (CTF).
Q: Я только что законнектился на CTF-сервер. Как узнать - голубой я или красный?
А: Если Вашу команду выеб%т - голубой, а если замочат - красный.


procedure AddStrToFile(S:string;const FileName:string;doNextLine:boolean);
{Добавление строки к файлу doNextLine - перевод строки}
const
  CR=#13#10;
var
  f:TFileStream;
begin
  if FileExists(FileName)
  then f:=TFileStream.Create(FileName,fmOpenWrite+fmShareDenyNone)
  else f:=TFileStream.Create(FileName,fmCreate);
  f.Position:=f.Size;
  if doNextLine and (f.Size> 0)
  then f.Write(CR,2);
  f.Write(pointer(s)^,length(s));
  f.Destroy;
end;

Here's the translation of the text into Russian:

Процедура AddStrToFile, которая добавляет строку в конец файла и opcional'no appends newline- символ. Вот разбивка кода:

Подпись процедуры

процедура AddStrToFile(S: string; const FileName: string; doNextLine: boolean);

Процедура принимает три параметра:

  • S: строка, которая будет добавлена в файл
  • FileName: имя файла, к которому будет добавлена строка
  • doNextLine: булевое значение, указывающее, нужно ли appends newline- символ после строки

Константы

const
  CR = #13#10;

Константа CR установлена в символ возврата каретки и символа конца строки (#13#10), используемые для представления newline- символа в системах DOS/Windows.

Переменные

var
  f: TFileStream;

Переменная f объявлена как объект TFileStream, который будет использоваться для чтения и записи файла.

Код

начало
  если FileExists(FileName)
    то f := TFileStream.Create(FileName, fmOpenWrite + fmShareDenyNone)
    else f := TFileStream.Create(FileName, fmCreate);

Код проверяет, существует ли файл с помощью FileExists. Если он есть, то открывает файл в режиме записи с запретом на доступ для других (fmOpenWrite + fmShareDenyNone). Если файла не существует, то создает новый файл.

  f.Position := f.Size;

Код устанавливает позицию файла в конец файла с помощью f.Position.

  если doNextLine и (f.Size > 0)
    то f.Write(CR, 2);

Если параметр doNextLine имеет значение True и файл не пуст (f.Size > 0), то записывает символ newline- в файл.

  f.Write(Pointer(S)^, Length(S));

Код записывает строку S в файл с помощью f.Write. Выражение Pointer(S)^ конвертирует указатель на строку в адрес памяти, который может быть записан в файл. Функция Length(S) возвращает длину строки.

  f.Destroy;
конец.

Наконец, код уничтожает объект TFileStream с помощью f.Destroy.

Альтернативное решение Вместо использования TFileStream можно использовать более современный и эффективный подход с использованием единицы System. IOUtils и функции WriteFile:

uses System.IOUtils;

процедура AddStrToFile(S: string; const FileName: string; doNextLine: boolean);
var
  Stream: TStream;
начало
  Stream := TStringStream.Create('');
  если doNextLine то
    Stream.Write(#13#10, 2);
  Stream.WriteString(S);
  WriteFile(FileName, Stream.Data, Length(Stream.Data));
  Stream.Free;
конец.

Код использует объект TStringStream для создания потока, который может быть записан и прочитан. Он добавляет символ newline- и строку в поток, а затем записывает содержимое потока в файл с помощью WriteFile. Наконец, он уничтожает поток. Этот подход более компактен и эффективен, чем оригинальный код.

Добавление строки к файлу: процедура AddStrToFile добавляет строку с возможным переводом на новую строку в указанный файл.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Файлы ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-06-02 10:20:12
2024-07-17 17:06:22/0.0078909397125244/2