typed files/pl

From Free Pascal wiki
Jump to navigationJump to search

Deutsch (de) English (en) polski (pl)

Pliki typowane

Plik typowany

A typed text file is suitable for processing files of any size. A typed text file consists of individual data records. All records in the file have the same structure. This means that each data record is of the same length.

Typowany plik tekstowy nadaje się do przetwarzania plików o dowolnym rozmiarze. Typowany plik tekstowy składa się z pojedynczych rekordów danych. Wszystkie rekordy w pliku mają taką samą strukturę. Oznacza to, że każdy rekord danych ma tę samą długość.

Zdefiniuj plik i strukturę rekordu

Struktura zależy od typu pliku i typu rekordu. Plik i rekord danych muszą mieć taką samą strukturę.

 type
   TMemployee = Record
   strName : String[20];
   sinContent : Single;
 end;

Tworzenie pliku

var
  datFile : File of TMemployee;
  recData : TMemployee;
begin
  AssignFile(datFile, 'example.txt');

  // Istniejący plik jest usuwany i ponownie tworzony
  ReWrite(datFile);

  ...
end;

Zamknięcie pliku

begin
  ...
  Close(datFile);  // zamyka plik
  ...
end;

Zapisywanie rekordu danych

var
  datFile : File of TMemployee;
  recData : TMemployee;
begin
  ...

  // wypełnij rekord danymi
  recData.strName := 'abcdefghij';
  recData.sinContent := 1700.21;

  // zapisz rekord do pliku
  Write(datFile, recData); 

  ...
end;

Odczytywanie rekordu danych

var
  datFile : File of TMemployee;
  recData : TMemployee;
begin
  AssignFile(datFile, 'example.txt');

  Reset(datFile);          // Ustaw wskaźnik pliku na początku pliku

  Read(datFile, recData);  // Czyta rekord z pliku
  ...
end;

Odczytanie pliku w całości

var
  datFile : File of TMemployee;
  recData : TMemployee;
begin
  AssignFile(datFile, 'example.txt');
  Reset (datFile);

  while not eof(datFile)      // wykonuj tak długo, dopóki dane mogą być odczytywane
    do begin
      read(datFile, recData); // odczytaj rekord z pliku
      ...
    end;

  CloseFile (datFile);
end;

Modyfikacja wybranego rekordu danych

begin
  AssignFile(datFile, 'example.txt');
  Reset(datFile);
  ...

  Seek(datFile, 0);        // ustawia wskaźnik pliku na początku pliku, czyli na pierwszym rekordzie
  Read(datFile, recData);  // wczytaj pierwszy rekord do zmiennej recData

  recData.sinContent := 1602.22; // aktualizuje rekord

  Seek(datFile, 0);              // ustawia wskaźnik pliku na pierwszym rekordzie
  Write(datFile, recData);       // Zapisz pierwszy rekord

  ...
end;

Zobacz także