Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek
Często chcemy przechowywać dane i mieć do nich dostęp po ponownym uruchomieniu programu. W tym celu stosujemy pamięci masowe. Dane zapisujemy w plikach. Język Pascal pozwala na korzystanie z plików tekstowych i plików binarnych, wśród których występują pliki zdefiniowane i niezdefiniowane (amorficzne).
Skojarzenie zmiennej z plikiem var nazwa_zmiennej:text; assign(nazwa_zmiennej,d:\plik.txt); Plik, w chwili kojarzenia ze zmienną, nie jest otwierany ani nie są wykonywane na nim żadne operacje; może nawet nie istnieć.
Otwarcie pliku Wykonując operację zapisu do pliku możemy usunąć jego zawartość albo stworzyć plik, jeśli nie istnieje. rewrite(nazwa_zmiennej); Aby wykonać operacje dopisania tekstu do istniejącego pliku używamy instrukcji: append(nazwa_zmiennej);
Odczyt, zapis, zmiana danych w pliku Podczas operacji odczytu i zapisu w plikach tekstowych posługujemy się liniami tekstu. writeln(nazwa_zmiennej, linijka tekstu); Zamknięcie pliku close(nazwa_zmiennej);
Program zapisujący tekst do pliku. program operacjaplik; var Plik : Text; begin assign(Plik,'d:\tp\test.txt'); rewrite(Plik); writeln(Plik,'Test zapisu do pliku') ; close(Plik); end.
Sprawdzanie czy plik już istnieje na dysku. fsearch – należy do modułu dos, konieczne jest poinformowanie o tym kompilator w sekcji poświęconej deklarowaniu modułów uses. fsearch(d:\test.txt,);
program operacjaplik; uses dos; var wers : string; Plik : Text; begin if fsearch('d:\tp\test.txt','')='' then begin writeln('NIE MA TAKIEGO PLIKU'); readln; end else begin assign(Plik,'d:\tp\test.txt'); reset(Plik); readln(Plik,wers); { ODCZYTUJE DANE Z PLIKU I ZAPISUJE POD ZMIENNĄ WERS TYPU STRING } close(Plik); writeln(wers); end; readln; end.
Odczytywanie zawartości pliku do momentu napotkania wskaźnika końca pliku. Służy do tego instrukcja eof zwracająca wartość true, jeśli napotka na wskaźnik końca pliku. UWAGA!! Upewnij się, że plik test.txt zawiera kilka linijek tekstu. Jeśli nie dopisz je.
program odczyt; var Plik : Text; wers: String; begin assign(Plik,'d:\tp\test.txt'); reset(Plik); repeat readln(plik,wers); writeln(wers); until eof(Plik); close(Plik); readln; end.
Pliki elementarne – pliki binarne Pliki elementarne zdefiniowane type nazwa_typu_pliku=file of nazwa_typu_zawartości_pliku;
Program zapisujący w pliku binarnym zdefiniowanym cyfry od 1 do 100. program plik_zdef; type zdefiniowany = file of integer; var plik :zdefiniowany; x:integer; begin assign(plik,'d:\tp\test.dat'); rewrite(plik); for x:=1 to 100 do begin write(plik,x); end; close(plik); readln; end.
Program odczytujący zawartość pliku binarnego zdefiniowanego program plik_zdef; type zdefiniowany = file of integer; var plik :zdefiniowany; x,a:integer; begin assign(plik,'d:\tp\test.dat'); reset(plik); for x:=1 to 100 do begin read(plik,a); write(' ',a); end; close(plik); readln; end.
Napisz program zapisujący w pliku binarnym zdefiniowanym 30 liczb wylosowanych z przedziału od 0 do 100. Napisz program, który odczyta liczby z pliku i zapisze je w tablicy jednowymiarowej.
program plik_zdef; type zdefiniowany = file of integer; var plik :zdefiniowany; x,losowo:integer; begin randomize; assign(plik,'d:\tp\test.dat'); rewrite(plik); for x:=1 to 100 do begin losowo:=random(100); write(plik,losowo); end; close(plik); readln; end.
program plik_zdef; type zdefiniowany = file of integer; var plik :zdefiniowany; x,a:integer; wektor:array[1..100]of integer; begin assign(plik,'d:\tp\test.dat'); reset(plik); for x:=1 to 100 do begin read(plik,wektor[x]); write(' ',wektor[x]); end; close(plik); readln; end.
Powtórzyć następujące zagadnienia: Podprogramy Funkcje Procedury Moduły Tablice Jednowymiarowe Dwuwymiarowej