Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Запись и чтение данных из файлов

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

Запись и чтение данных из файлов

Шеф дает секретарше две дискеты:
- Леночка, скопируйте вот эту дискету на эту, чистую.
Через пару минут она прибегает в слезах:
- Михаил Иваныч, чистую дискету ксерокс зажевал!


{
В следующем примере показано как можно осуществить чтение
и запись данных в/из файла. Данный пример предполагается
в первую очередь использовать тем, кто делает первые шаги
в вопросах чтения/записи. Для получения дополнительной
информации о каждом объекте, обратитесь к электронной справке.
В коде присутствует минимальная обработка исключительных
ситуаций, но она никоим образом не является законченным решением.

Для оформления программы необходимо установить на форме
компонент TMemo с заголовком Запись, и кнопку с заголовком
Чтение. Запустите программу, поместите несколько строк в "memo",
после чего нажмите на кнопку Запись. Очистите "memo", и нажмите Чтение.
}

procedure TForm1.BtnWriteClick(Sender: TObject);
{ автор: Michael Vincze
}
var
  FileStream: TFileStream;
  Writer: TWriter;
  I: Integer;
begin
  FileStream :=
    TFileStream.Create('c:\delphi\projects\delta40\fileio\stream.txt',
    fmCreate or fmOpenWrite or fmShareDenyNone);
  Writer := TWriter.Create(FileStream, $FF);
  Writer.WriteListBegin;
  for I := 0 to Memo1.Lines.Count - 1 do
    Writer.WriteString(Memo1.Lines[I]);
  Writer.WriteListEnd;
  Writer.Destroy;
  FileStream.Destroy;
end;

procedure TForm1.BtnReadClick(Sender: TObject);
{ автор:  Michael Vincze
}
var
  FileStream: TFileStream;
  Reader: TReader;
begin
  { пробуем открыть несуществующий файл
  }
  try
    FileStream :=
      TFileStream.Create('c:\delphi\projects\delta40\fileio\bogus.txt',
      fmOpenRead);
  except
    ; { Destroy не нужен, поскольку Create потерпела неудачу  }
  end;

  FileStream :=
    TFileStream.Create('c:\delphi\projects\delta40\fileio\stream.txt',
    fmOpenRead);
  Reader := TReader.Create(FileStream, $FF);
  Reader.ReadListBegin;
  Memo1.Lines.Clear;
  while not Reader.EndOfList do
    Memo1.Lines.Add(Reader.ReadString);
  Reader.ReadListEnd;
  Reader.Destroy;
  FileStream.Destroy;
end;

Анализ кода: простой пример чтения и записи данных в файл с помощью Delphi. Код включает два процедура: BtnWriteClick для записи данных в файл и BtnReadClick для чтения данных из файла.

  1. В процедуре BtnWriteClick:

    • Создается объект TFileStream с именем 'stream.txt' в режиме записи (fmCreate or fmOpenWrite or fmShareDenyNone). Если файл не существует, то он будет создан; если файл уже существует, то он будет перезаписан.
    • Создается объект TWriter с помощью объекта TFileStream и кодировки $FF.
    • Писатель записывает маркер начала списка в файл с помощью WriteListBegin.
    • Содержимое контрола Memo1 читается построчно, и каждая строка записывается в файл с помощью WriteString. Цикл работает от 0 до количества строк в Memo1 минус 1.
    • Писатель записывает маркер конца списка с помощью WriteListEnd, а затем оба писатель и файловый поток уничтожаются.
  2. В процедуре BtnReadClick:

    • Используется блок try-except для попытки открытия не существующего файла 'bogus.txt' в режиме чтения (fmOpenRead). Если файл не существует, то будет выброшено исключение.
    • Создается файловый поток с именем 'stream.txt' в режиме чтения (fmOpenRead).
    • Создается объект TReader с помощью файла и кодировки $FF.
    • Читатель читает маркер начала списка из файла с помощью ReadListBegin.
    • Содержимое файла читается построчно, и каждая строка добавляется в Memo1 с помощью Lines.Add. Цикл работает до конца списка (EndOfList).
    • Читатель читает маркер конца списка из файла с помощью ReadListEnd, а затем оба читатель и файловый поток уничтожаются.

Рекомендации: 1. Обработка ошибок: код включает некоторые основные механизмы обработки ошибок (например, попытка открытия не существующего файла), но в производственной среде необходимо более тщательно обрабатывать исключения. 2. Путь к файлу: пути к файлам, используемые в коде ('c:\delphi\projects\delta40\fileio\stream.txt'), являются жестко закодированными и могут не быть подходящими для всех сред. Рекомендуется использовать относительные или настройки-основанные пути к файлам. 3. Организация кода: процедуры BtnWriteClick и BtnReadClick относительно короткие, но они все еще выполняют различные задачи. Возможно, стоит разбить их на более мелкие функции для улучшения организации кода и повторного использования.

В статье рассмотрено чтение и запись данных из файлов в Delphi, а также обработка исключительных ситуаций при работе с файлами.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:45:01/0.014101028442383/1