 
Programowanie
dr inż. Elżbieta Jasińska
1. Pliki
Plik  są  odwzorowaniem  fizycznych  zbiorów.  W  języku  potocznym  pojęć  tych  często  nie  rozróżnia  się, 
określając je, podobnie jak w języku angielskim, jednym terminem plik (file). W języku Delphi istnieją trzy 
rodzaje plików: 
• tekstowe, 
• zdefiniowane (elementowe), 
• niezdefiniowane (amorficzne). 
Prowadzony kurs zawęża się do pracy na dwóch pierwszych.
Operacje  na  dowolnym  pliku  zapisać  można  w  sposób  uniwersalny,  w  zależności  od  rodzaju  tego  pliku 
polecenia niezbędne do ich  wykonania mogą się różnić. 
1.1.
Wybrane procedury i funkcje uniwersalne dla plików tekstowych
i zdefiniowanych
• Assignfile (zmienna_plikowa, nazwa_zbioru_typu_łańcuchowego); 
Np. 
Assignfile (f, ‘a.txt’); 
Procedura ta umożliwia skojarzenie zmiennej plikowej z fizycznym zbiorem danych o podanej ścieżce .  
 
• Rewrite(zmienna_plikowa); 
Np. 
Rewrite(f); 
Procedura powoduje utworzenie nowego fizycznego zbioru danych o nazwie skojarzonej wcześniej z podaną 
zmienną plikową (otwarcie do zapisu). W przypadku gdy zbiór o takiej nazwie już istnieje, zostanie on 
usunięty, a w jego miejscu zostanie utworzony nowy zbiór pusty. Zbiór po otwarciu ustawiany jest w pozycji 
początkowej.  
 
• Reset(zmienna_plikowa); 
Np. 
Reset(f); 
Procedura ta służy do otwarcia pliku skojarzonego z już istniejącym zbiorem. (Otwarcie do odczytu). Zbiór po 
Skojarzyć plik ze zmienną plikową
Otworzyć plik jeśli istnieje lub utworzyć go
Wykonać ciąg instrukcji na danych w pliku
Zamknąć plik
 
Programowanie
dr inż. Elżbieta Jasińska
otwarciu ustawiany jest w pozycji początkowej. 
 
• Closefile(zmienna_plikowa); 
Np.  
Closefile(f); 
Procedura zamyka fizyczny zbiór danych skojarzony ze zmienną plikową. Każdy plik, który został otwarty, 
musi być zamknięty. 
 
• Eof(zmienna_plikowa); 
Np. 
Eof(f); 
 
Funkcja ta przyjmuje wartość logiczną TRUE gdy plik znajduje się w pozycji przed ostatnim znakiem zbioru 
(znakiem Ctrl-Z) lub gdy zbiór nie zawiera żadnych elementów. W przeciwnym wypadku ma wartość FALSE. 
1.2.
Pliki tekstowe
Pliki tekstowe zapisują informacje jako ciąg znaków (kodów ASCII) . Można w nich zapisywać wielkości 
różnych typów oraz stosować formatowanie zapisu. Pliki te umożliwiają wyłącznie dostęp sekwencyjny do 
zawartych  w  nich  danych.  Oznacza  to,  że  aby  odczytać  wartość  określonego  elementu,  należy  wcześniej 
przeczytać to co jest przed nim. 
1.2.1. Procedury i funkcje przetwarzania plików tekstowych
• Append(zmienna_plikowa); 
Np. 
Append(f); 
 
Procedura otwiera plik skojarzony ze zmienną plikową i ustawia zbiór na pozycji końcowej (otwarcie do 
dopisywania). 
 
• Eoln(zmienna_plikowa); 
NP. 
Eoln(f); 
Funkcja, której wartość logiczna jest TRUE gdy plik znajduje się w pozycji znaku końca wiersza (tj. znaku 
CR) lub gdy wartością funkcji Eof dla tej samej zmiennej plikowej jest TRUE. W przeciwnym wypadku 
wartością funkcji jest FALSE. 
 
• Read(zmienna_plikowa,lista_zmiennych); 
lub 
• Readln(zmienna_plikowa,lista_zmiennych); 
Np. 
• Read(f, X,Y,Z); 
lub 
• Readln(f,  X,Y,Z); 
 
 
Programowanie
dr inż. Elżbieta Jasińska
Procedury te służą do czytania elementów z plików. Pierwszym parametrem tych procedur jest odpowiednia 
zmienna  plikowa,  po  której  następują  oddzielone  przecinkami  nazwy  czytanych  zmiennych.  Po 
każdorazowym  odczytaniu  wartości  pojedynczej  zmiennej  następuje  automatyczne  przesunięcie  wskaźnika 
do  początku  następnego  elementu.  W  przypadku  procedury  Readln  wskaźnik  przesuwa  się  do  początku 
następnego wiersza. 
 
• Write(zmienna_plikowa,lista_argumentów); 
lub 
• Writeln(zmienna_plikowa,lista_argumentów); 
 
Np. 
• Write (f, X,Y,Z); 
lub 
• Writeln (f,  X,Y,Z); 
 
Procedury powyższe umożliwiają wprowadzanie elementów do plików. Podobnie jak w przypadku czytania, 
pierwszym parametrem tych procedur jest identyfikator odpowiedniej zmiennej plikowej, odpowiadającej 
otwartemu uprzednio plikowi. Wywołanie procedur powoduje zapisanie do fizycznego zbioru odpowiednich 
wielkości. Po każdorazowym zapisaniu wartości pojedynczej zmiennej następuje automatyczne przesunięcie 
wskaźnika do początku następnego elementu. W przypadku procedury Writeln wskaźnik przesuwa się do 
początku następnego wiersza. 
 
• SeekEof (zmienna_plikowa); 
Np. 
 SeekEof (f); 
 
Funkcja ta daje takie same wyniki jak funkcja Eof, z tym że ignoruje najbliższe spacje, znaki tabulacji oraz 
znaki CR i LF. 
 
• SeekEoln (zmienna_plikowa); 
Np. 
• SeekEoln (f); 
 
Funkcja ta daje takie same wyniki jak funkcja Eoln, z tym że ignoruje najbliższe spacje, znaki tabulacji oraz 
znaki CR i LF. 
 
Wyżej wymienione procedury maja zastosowanie do operacji na plikach tekstowych, dla operacji na plikach 
zdefiniowanych widoczne są pewne różnice. 
1.3.
Pliki zdefiniowane
Pliki zdefiniowane wykorzystują w zapisie reprezentację maszynową. W przypadku pliku zdefiniowanego 
możliwy jest zapis i odczyt wielkości wyłącznie jednego typu składowego. Pliki te są plikami o dostępie 
swobodnym, co oznacza, że w każdym momencie możliwy jest dostęp do dowolnego elementu pliku. 
 
Programowanie
dr inż. Elżbieta Jasińska
Plik  zdefiniowany  jest  struktura  składającą  się  z  danych  tego  samego  typu,  np.  Byte  lub  Real.  Dlatego aby 
móc  przedstawić  dane  różnego  typu  stosuje  się  deklaracje  własnego  typu,  najczęściej  w  postaci  rekordu 
(pkt.4.1 Wykład 1)  
1.3.1. Procedury i funkcje przetwarzania plików zdefiniowanych
•FileSize(zmienna_plikowa); 
Np. 
FileSize(g); 
Wartością funkcji jest rozmiar (LongInt) wyspecyfikowanego pliku. Funkcja ta zwraca liczbę elementów 
danego pliku zdefiniowanego. 
 
• FilePos(zmienna_plikowa); 
Np. 
FilePos(g); 
 
Wartością funkcji jest liczba całkowita typu LongInt, podająca aktualną pozycje pliku skojarzonego ze 
zmienną plikową .Wartość funkcji jest równa 0 jeżeli plik znajduje się w pozycji początkowej, natomiast gdy 
plik znajduje się w pozycji końcowej wartość ta jest równa wartości funkcji FileSize. 
Dlatego należy zwrócić uwagę na indeksowanie pozycji w pliku zdefiniowanym, ponieważ ustawieni kursora 
przed pierwszym elementem, oznacza ustawieni go na pozycji 0. 
 
• Seek(zmienna_plikowa, pozycja); 
Np. 
Seek(g,n); 
 
Procedura ta umożliwia przesunięcie aktualnego położenia pliku do elementu o podanej liczbie porządkowej( 
tutaj n), określonego parametrem pozycja typu LongInt. 
 
Zapisywanie i odczytywanie plików zdefiniowanych odbywa się za pomocą standardowych procedur Read 
oraz Write.