Pliki [Pascal]

Typy plików

W Object Pascalu istnieją trzy typy plików: pliki elementowe, tekstowe i amorficzne, ale omówimy tylko dwa pierwsze. Różnią się one sposobem deklaracji oraz sposobem odczytywania i zapisywania danych. Ogólny schemat obsługi plików w Object Pascalu:

  1. Stworzenie i skojarzenie zmiennej plikowej z plikiem.

  2. Otwarcie pliku.

  3. Odczyt lub/i zapis danych z/do pliku.

  4. Zamknięcie pliku.

Do otworzenia pliku używamy procedur reset(zmiennePlikowa) lub rewrite(zmiennaPlikowa). Do zamknięcia: Close(zmiennaPlikowa) Procedura reset otwiera plik i ustawia wskaźnik plikowy na jego początku (Przygotowuje plik do odczytu). Procedura rewrite otwiera plik i usuwa całą jego zawartość następnie ustawia wskaźnik plikowy na początku pliku. (Procedura ta tworzy plik, kiedy nie ma go na dysku) Procedura Close zamyka plik.

Pliki elementowe

Pliki elementowe są to pliki, w których zapisuje się jeden typ danych(np. integer, byte itd.). Deklaruje się je tak:

var

nazwaZmiennej : file of typ;

Oto program pokazujący jak to działa:

program pliki1;

var

plik1 : file of integer;

zmienna : integer;

zmienna2 : integer;

begin

zmienna := 14354;

zmienna2 := 2516;

Assign(plik1, 'C:\integer.int'); {Skojarzenie zmiennej plikowej z plikiem na dysku}

Rewrite(plik1); {Otworzenie zmiennej plikowej i usunięcie z niej danych (lub stworzenie nowego pliku)}

write(plik1, zmienna, zmienna2); {Zapisanie zmiennej do pliku}

Reset(plik1); {Powrót na początek pliku}

read(plik1,zmienna2); {Odczytanie zmiennej z pliku}

writeln(zmienna2); {Napisze "14354"}

Close(plik1); {Zamknięcie pliku}

readln;

end.

Pliki tekstowe

Pliki tekstowe są to pliki, w których możemy zapisać tekst i traktować prawie tak jak standardowe wyjście. Deklaracja tych plików wygląda tak:

var

nazwaZmiennej : text;

To prosty przykład:

program plikit;

var

Plik: Text; {zmienna plikowa tekstowa}

begin

assign(Plik, 'nowy.txt'); {przypisanie pliku do zmiennej}

rewrite(Plik); {usunięcie danych z pliku}

writeln(Plik, 'fasola bywa wesoła'); {wpisanie danych do pliku}

close(Plik); {zapisanie pliku}

end.

Plik nowy.txt w katalogu programu będzie teraz zawierał tekst "fasola bywa wesoła" bez względu na to, czy wcześniej istniał i czy coś zawierał.

W formacie tekstowym możemy zapisać dowolne dane, jednak kosztem tego, że operacje odczytu i zapisu będą bardziej skomplikowane - dlatego, że w plikach tekstowych musimy wszystko odczytywać po kolei. Oto program pokazujący jak to wszystko działa:

program plikit2;

var

plik : text;

dana1 : string;

dana2 : integer;

dana3 : byte;

tablica : array [0..10] of string;

i : integer;

begin

dana1 := 'Hmm';

dana2 := 12412;

dana3 := 123;

Assign(plik, 'C:\plik.txt');

Rewrite(plik);

writeln(plik, dana1, dana2); {Zapisanie danych do pliku (Odbywa się to tak samo, jak wypisywanie danych do konsoli)}

writeln(plik, dana3);

Close(plik);

Reset(plik); {Otwarcie pliku w trybie do odczytu}

i := 0;

while not EOF(plik) do

begin

readln(plik, tablica[i]);

i := i + 1;

end;

Close(plik);

for i := 0 to 10 do

begin

writeln(tablica[i]);

end;

readln;

end.

Jak widać program jest o wiele bardziej złożony. Oto co zostanie wypisane na ekran po uruchomienu programu:

Hmm12412

123

Do pisania do pliku wcale nie musisz otwierać pliku instrukcją Rewrite, która kasuje zawartość pliku! Instrukcja Append otwiera plik w trybie "do dopisu", w którym (jak sama nazwa mówi) dopisuje się dane do pliku. Należy pamiętać że procedurę Append możemy używać tylko i wyłącznie do obsługi plików tekstowych.

Warto zwrócić uwagę na funkcję EOF(plik) w powyższym programie. Informuje ona czy jesteśmy na końcu pliku (end-of-file). EOF bez argumentów sprawdza, czy wprowadzono znak końca pliku z klawiatury (crtl+D w Linuksie, ctrl+Z w DOSie).

program czytaj;

const

n = 10;

var

tablica : array [1..n] of integer;

i, j : integer;

begin

i := 1;

{wczytuje dane aż użytkownik wprowadzi znak końca pliku lub skończy się miejsce w tablicy}

while not EOF do

begin

readln(tablica[i]);

i := i + 1;

if i > n then

begin

writeln('Brak miejsca w tablicy.');

break; {przerywa pętlę}

end;

end;

{wypisuje dane}

for j := 1 to i-1 do

begin

writeln(tablica[j]);

end;

readln;

end.

Warto wiedzieć, że instrukcja assert(plik, '') z nazwą pliku będącą łańcuchem pustym wiąże plik ze standardowym wejściem (klawiatura i ekran)


Wyszukiwarka

Podobne podstrony:
34 Pliki Operacje na plikach w Pascalu
Pliki opis[Pascal]
PAS07, wyk˙ad PASCAL - pliki zdefiniowane
PAS07, wyk˙ad PASCAL - pliki zdefiniowane
34 Pliki Operacje na plikach w Pascalu
Wykład z Pascala 2
PASCAL 1
pliki 2Stereotyp
Sem II Transport, Podstawy Informatyki Wykład XXI Object Pascal Komponenty
pliki
ref 2004 04 26 object pascal
Prezentacja trójkątów Pascala
Pliki, foldery, skroty kalwiszo Nieznany
kurs pascala
SUPER SPOSÓB NA ZARABIANIE, pliki zamawiane, edukacja
Modlitwa wstępna na każdy dzień nowenny, pliki zamawiane, edukacja
BIOLOGIA-ukladwspolczulnyiprzwspolczulny, Pliki, Liceum, Biologia

więcej podobnych podstron