Wstęp do obsługi plików w Pascalu
Pascal posiada kilka typów plików: •pliki tekstowe(można je podglądad w zwykłym notatniku) •pliki znakowe(bardzo podobne do powyższego typu) •pliki liczbowe(nie można ich podglądad w notatniku) •pliki rekordowe(nie można ich podglądad w notatniku)
Zmienne plikowe definiuje się za pomocą typów plikowych, np.: type plik_znk = file of char; plik_licz = file of byte; {=====================} var znaki: plik_znk; liczby: plik_licz;
Instrukcja ASSIGN, służy do wiązania zmiennej plikowej z konkretnym plikiem na dysku assign(znaki,’M:\znaki.dat'); assign(liczby,'liczby.dat');
Trzy tryby pracy • append(zmienna_plikowa) - umożliwia dopisywanie nowych danych do pliku(plik musi istnied - tylko dla plików TEKSTOWYCH) • reset(zmienna_plikowa) - otwiera plik do czytania(plik musi istnied) • rewrite(zmienna_plikowa) - otwiera plik do pisania, usuwa całą zawartośd i zaczyna zapisywanie od początku pliku, jeśli plik nie istnieje - tworzy go
Odczyt i zapis do pliku read(znaki,q); { var q: char; } read(liczby,w); { var w: interger; } write(znaki,q); { var q: char; } write(liczby,w); { var w: interger; }
Zamknięcie pliku i zapis na dysku
Close(zmienna_plikowa);
Przykład kodu, który sprawdza czy plik do odczytu istnieje.
{-} repeat write('Podaj pelna nazwe pliku do otwracia:'); readln(nazwa); assign(zmienna_plikowa,nazwa); reset(zmienna_plikowa); if IOresult <> 0 then writeln('Podany plik nie istnieje, wprowadz ponownie!'); until IOresult = 0; {+}
Deklaracja pliku tekstowego type plik_txt = text;
Pliki – przydatne funkcje
EOF(zm_plik) – zwraca TRUE gdy osiągnięto koniec pliku EOLN(zm_plik) – zwraca TRUE gdy osiągnięto koniec linii w pliku tekstowym Seek(zm_plik,n) – ustawia wskaźnik pliku na elemencie o numerze n FilePos(zm_plik) – zwraca aktualną pozycję wskaźnika pliku FileSize(zm_plik) – zwraca liczbę elementów pliku
IOResult – zwraca 0 gdy ostatnią operację na pliku wykonano pomyślnie – w przeciwnym wypadku zwraca kod błędu
Pliki nietekstowe: znakowe
Rozmiar plików znakowych wynosi dokładnie tyle bajtów ile jest w nim zapisanych znaków ASCII. type plik_znk = file of char; var znaki, znaki2: plik_znk;
Pliki nietekstowe: liczbowe Rozmiar plików liczbowych wynosi: rozmiar bajtów typu * ilośd zapisanych liczb. type plik_licz = file of longint; var liczby: plik_licz;
Pliki nietekstowe: rekordowe type { definicja rekordu } licznik = record dzial : string[20]; autor : string[20]; ile : longint; end; plik_rek = file of licznik; var rekordy: plik_rek;