Wstp do obsugi plikow w Pascalu

13
Wstęp do obsługi plików w Pascalu

description

Pascal programowanie

Transcript of Wstp do obsugi plikow w Pascalu

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; varrekordy: plik_rek;