ÿþ<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>P A S C A L</TITLE> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8909-2"> <link rel="Stylesheet" type="text/css" href="../../pliki/body.css"> <META HTTP-EQUIV="Content-Language" CONTENT="pl"> </HEAD> <body bgcolor=#FFFFFF> <h3> Zapis i odczyt parametr&oacute;w z pliku</h3> <div align=center> <table width=100%><tr><td> <i><p align=justify> Podczas wykonywania programu ilo¶ danych nieraz jest do¶ spora. Najlepsza form± zachowania takiej informacji jest zapis na jakim¶ no¶niku pamici. Najlepiej jest to zrobic na dysku twardym.<br> <br> Aby mo|na byBo dokonac takiego zapisu czy odczytu musimy zdefiniowa tzw.<b> zmienn± plikow±</b>, czyli strukt&oacute;r danych opisuj±cych |±dany plik. To wBa¶nie na niej wykonuje si operacjie zapisu i odczytu.<br> Do dyspozycji mamy trzy rodzaje typ&oacute;w plik&oacute;w: <li>elementarny <li>tekstowy <li>amorficzny.<br> </b></i></td></tr></table><br> <div align=center> <table width=95% bgcolor=#ffffff><tr><td> <b>Pliki elementarne<br></b> <i>Deklaracja:</i><br><br> <div align=center> <table width=90% bgcolor=#ABCDEF><tr><td> <i>nazwa_zmiennej_plikowej:<b>file of</b>&nbsp;&nbsp;typ_skBadowy;{dowolny typ bez plikowego i obiektowego}<br> </td></tr></table> </div> <i><br> Kolejnym krokiem jest zwi±zanie <b>zmiennej_plikowej</b> z konkretnym plikiem procedur± <b>assign</b>.<br><br> <div align=center> <table width=90% bgcolor=#ABCDEF><tr><td> <i><b>assign</b>&nbsp;&nbsp;(nazwa_zmiennej _plikowej,'nazwa_pliku');<br> np:<br> assign(dane,'c:\dane\wyniki\dane.dat'); </td></tr></table> </div><br> Dostp do pliku mamy za pomoca poleceD <b>write (zapis), read (odczyt)</b>: <br><br><div align=center> <table width=90% bgcolor=#ABCDEF><tr><td> <i><b>write</b>&nbsp;&nbsp;(nazwa_zmiennej _plikowej,lista_element&oacute;w);<br> <i><b>read</b>&nbsp;&nbsp;(nazwa_zmiennej _plikowej,lista_element&oacute;w); </td></tr></table> </div><br> Polecenia <b>writeln</b> i <b> readln</b> s± przy plikach elementernych <b>niedozwolone</b>.<br> OdwoBania do <b>zmiennej_plikowe</b> s± mo|liwe dopiero po<b> otwarciu pliku</b>, a po wykonaniu dziaBaD taki plik trzeba <b>zamkn±</b>.<br> Standardowe procedury otwierania i zamykania pliku: <br><br><div align=center> <table width=90% bgcolor=#ABCDEF><tr><td> <i><b>reset</b>&nbsp;&nbsp;(nazwa_zmiennej _plikowej);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{polecenie to otwiera tylko istniej±ce pliki i ustawia wska=nik na 0,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wska=nik mo|na przenie¶ w dowolne miejsce pliku}<br><br> <i><b>rewrite</b>&nbsp;&nbsp;(nazwa_zmiennej _plikowej);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{polecenie to otwiera plik bez wzgldu na to czy takowy istnieje,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jak plik istnieje kasuje jego zawarto¶ ustawiaj±c wska=nik na 0}<br><br> <i><b>close</b>&nbsp;&nbsp;(nazwa_zmiennej _plikowej); {zamknicie pliku} </td></tr></table> </div><br> PrzykBad zapisu do pliku: <div align=center> <table width=80% bgcolor=#ABCDEF><tr><td> <i><b>program</b> nazwa_prgramu;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>var</b>&nbsp;&nbsp; f:file of integer;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i:integer;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tab:array[1..10] of integer; <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<b>Begin</b><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assign(f.'dane.dat');<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite(f); <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i:=1 to 10 do write(f.,tab[i]:=random(100)+1); <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close(f); <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>End.</b> </td></tr></table> </div> <br><br> PrzykBad odczytu z pliku: <div align=center> <table width=80% bgcolor=#ABCDEF><tr><td> <i><b>program</b> nazwa_prgramu;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>var</b>&nbsp;&nbsp; f:file of real;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i:integer;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tab:array of integer; <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<b>Begin</b><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i:=0;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assign(f.'dane.dat');<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reset(f);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {otwiera plik, kt&oacute;ry musi istnie - inaczej wy¶wietla bB±} <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while not<b> eof(f)</b> do &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{czyta do koDca pliku}<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>Begin</b><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inc(i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{inc(i) to inaczej i:=i+1}<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read(f,tab[i]);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>end;</b><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close(f); <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>End.</b> </td></tr></table> </div> <br><br><b> Przydatne polecenia:<br></b> Zmiana poBo|enia wska=nika: <b> seek (zmienna_plikowa, nuemer_elememtu);</b><br> Rozmiar pliku w elementach: <b>FileSize(f)</b><br> Bie|±ca warto¶ ska|nika jest zwracana za pomoc±: <b> FilePos</b><br><br> przykBadik: <b>seek(f,FileSize(f));</b> {ustawia wska=nik na koDcu pliku - mozna dopisywa} </td></tr></table> </div> </td></tr></table><br> <div align=center> <table width=80% bgcolor=#CBCDEF><tr><td> <b>Pliki tekstowe</b><br><i><p align=justify> Do plik&oacute;w tekstowych tycz± si te same zasady co do elementarnych. Sa jednak maBe wyj±tki. Dozwolone jest stosowanie <b>writeln</b> i <b>readln</b>, otwieranie do dopisywania umo|liwia procedura <b>append (zmienna_plikowa)</b>, polecenie <b>reset</b> otwiera plik tylko do odczytu, a <b>rewrite </b> tylko do zapisu. </td></tr></table></td></tr></table> </body></html>