untyped files/pl

From Lazarus wiki
Jump to navigationJump to search

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

Pliki tekstowe nietypowane

Plik tekstowy nietypowany

Nietypowany plik tekstowy nadaje się do przetwarzania plików o dowolnym rozmiarze. W przypadku plików bez typu, zawartość pliku jest odczytywana wiersz po wierszu. I odwrotnie, plik jest zapisywany wiersz po wierszu. Rekordy danych w pliku bez typu mogą mieć różną długość.

Tworzenie pliku

 var
   datFile : TextFile;  // lub: datFile: text
   strName : String;
   sinContent : Single;
 begin
   Assign(datFile, 'example.txt');  // Przypisuje nazwę pliku do zmiennej datFile i otwiera plik
   ReWrite(datFile);                // Stary plik zostanie nadpisany
   strName := 'qwert';
   sinContent := 1800.23;
   WriteLn(datFile, strName, sinContent);  // Zapisuje pierwszy rekord do nowego pliku
   ...
 end;

W trybie kompilatora OBJPFC lub DELPHI oprócz Assign dostępna jest procedura AssignFile, aby uniknąć pomyłek z TPersistent.Assign.

Otwieranie pliku

 var
   datFile : TextFile;
   strName : String;
   sinContent : Single;
 begin
   Assign(datFile, 'example.txt');        // Przypisuje nazwę pliku do zmiennej datFile
   Reset(datFile);                        // Ustawia wskaźnik pliku na początek pliku
   ReadLn(datFile, strName, sinContent);  // Odczytuje pierwszą linię z pliku
   ReadLn(datFile, strName, sinContent);  // Odczytuje drugą linię z pliku
   ...
 end;

Zamykanie pliku

 var
   datFile : TextFile;
   strName : String;
   sinContent : Single;
 begin
   ...
   Close(datFile);  // zamyka plik
 end;

Podobnie jak dla AssignFile / Assign, w trybie kompilatora OBJPFC lub DELPHI dostępna jest także procedura CloseFile.

Dołącz rekord do istniejącego pliku

W przypadku plików tekstowych (plików bez typu) rekord danych można dodać na końcu pliku za pomocą polecenia Append.

 var
   datFile : TextFile;
   strName : String;
   sinContent : Single;
 begin
   Assign(datFile, 'example.txt');   // Przypisuje nazwę pliku do zmiennej datFile
   Append(datFile);                  // Otwiera plik z dostępem do zapisu i dodaje rekordy na końcu pliku
   strName := 'sdf' ;
   sinContent : = 2001.21 ;
   WriteLn(datFile, strName, sinContent);  // Zapisuje kolejny rekord do nowego pliku
   Close(datFile);                         // Zamyka plik

Odczytanie całego pliku

 var
   datFile : TextFile;
   strName : String;
   sinContent : Single;
 begin
   Assign(datFile, 'example.txt');
   Reset(datFile);

   while not eof(datFile)                  // Wykonuj w pętli, dopóki dane można jeszcze odczytać
     do begin
       read(datFile, strName, sinContent); // Odczytuje zawartość pliku
     end;

   Close(datFile);
 end;

Zobacz także