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

Использование TFileStream

Delphi , Компоненты и Классы , Потоки

Использование TFileStream

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

type

   TPerson = record
     Name: string[50];
     vorname: string[50];
   end;

   TComputer = record
     Name: string[30];
     cpu: string[30];
   end;

 var
   Form1: TForm1;

   Person: TPerson;
   Computer: TComputer;

   Stream: TFileStream;

 implementation

 {$R *.DFM}

 //Speichern resp. Erstellen von Datei 
//Save or create the file 
procedure TForm1.Button1Click(Sender: TObject);
 begin
   try
     Stream := TFileStream.Create('c:\test.dat', fmOpenReadWrite);
   except
     Stream := TFileStream.Create('c:\test.dat', fmCreate);
   end;

   //2 Eintrage pro Record 
  //save 2 records for TPerson and TComputer 
  Person.Name    := 'Grossenbacher';
   Person.vorname := 'Simon';
   Stream.WriteBuffer(Person, SizeOf(TPerson));

   Person.Name    := 'Stutz';
   Person.vorname := 'Thomas';
   Stream.WriteBuffer(Person, SizeOf(TPerson));

   Computer.Name := 'Delphi';
   Computer.cpu  := 'Intel';
   Stream.WriteBuffer(Computer, SizeOf(TComputer));

   Computer.Name := 'Win';
   Computer.cpu  := 'AMD';
   Stream.WriteBuffer(Computer, SizeOf(TComputer));

   Stream.Free;
 end;

 //ladt alle daten von TPerson in listbox1 und 
//daten von TComputer in Listbox2 

//load records from TPerson to listbox1 and 
//load records from TComputer to listbox2 
procedure TForm1.Button2Click(Sender: TObject);
 var
   i: Integer;
 begin
   try
     // nur lesen offnen 
    //open read only 
    Stream := TFileStream.Create('c:\test.dat', fmOpenRead);
   except
     ShowMessage('Datei konnte nicht geladen werden.');
     Exit;
   end;

   //variable i auf anzahl Eintrage setzen 

  //set variable i to the record count 

  //Einlesen von TPerson 
  //Read records TPerson 
  for i := 2 downto 1 do
   begin
     Stream.ReadBuffer(Person, SizeOf(TPerson));
     Listbox1.Items.Add(Person.vorname + ' ' + Person.Name);
   end;

   //Einlesen von TComputer 
  //Read Records TComputer 
  for i := 2 downto 1 do
   begin
     Stream.ReadBuffer(Computer, SizeOf(TComputer));
     Listbox2.Items.Add(Computer.Name + ' ' + Computer.cpu);
   end;

   Stream.Free;
 end;

Программа на Delphi использует компонент TFileStream для чтения и записи данных в файл с именем "c:\test.dat". Программа определяет два типа записей, TPerson и TComputer, которые используются для хранения данных о людях и компьютерах. Программа предоставляет два кнопки: одну для сохранения или создания файла, а другую для загрузки данных из файла в два списка.

Процедура Button1Click Эта процедура вызывается при клике первой кнопки. Она создает объект TFileStream для доступа к файлу "c:\test.dat". Если файл не существует, он будет создан. Затем программа записывает две записи типа TPerson и две записи типа TComputer в файл с помощью метода WriteBuffer.

Процедура Button2Click Эта процедура вызывается при клике второй кнопки. Она создает объект TFileStream для доступа к тому же файлу "c:\test.dat", но на этот раз в режиме только для чтения. Программа затем читает две записи типа TPerson и две записи типа TComputer из файла с помощью метода ReadBuffer, а затем добавляет их в два списка.

Замечания

  • Код использует функцию SizeOf для получения размера каждого типа записи в байтах, который используется для записи и чтения данных из файла.
  • Код предполагает, что записи пишутся в порядке, в котором они были объявлены (то есть TPerson сначала, а затем TComputer). Это может не быть случае, если формат файла изменяется или если другие программы доступ к тому же файлу.
  • Код плохо обрабатывает ошибки. Например, если файл повреждён или не может быть открыт для каких-либо причин, программа будет выбрасывать исключение и завершаться. Лучше было бы обработать эти ситуации более robustly.

Альтернативное решение Вместо использования TFileStream для чтения и записи данных можно использовать более современный подход,such as SQLite или файл в формате JSON. Эти решения предоставят лучшую обработку ошибок и будут более гибкими, если изменится формат данных в будущем.

Кроме того, вместо использования двух отдельных списков для TPerson и TComputer, можно создать одиночный список с несколькими столбцами для отображения данных. Это сделает управление и отображение данных более организованным образом.

В статье рассматривается использование компонента TFileStream в 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:52:37/0.0056891441345215/1