PLIK
jest ciągiem elementów tego samego typu, tyle, że liczba jego składowych jest zmienna. Jest uzależniona od przebiegu wykonywania programu. Plik jest logicznym modelem fizycznego zbioru danych. W dowolnej chwili może być dostępny tylko jeden element pliku, a dostęp do pozostałych elementów jest możliwy dopiero po wykonaniu pewnych operacji na plik. Za pomocą tego samego pliku można w programie przetwarzać różne fizyczne zbiory danych.W języku Turbo Pascal rozróżniamy trzy klasy plików:
Pojedynczy typ plikowy definiuje się za pomocą konstrukcji:
TYPE
lub
TYPE identyfikator typu = FILE;
Do otwarcia pliku, w zależności od kierunku przesyłania elementów pliku , służą procedury:
REWRITE - tworzy i otwiera nowy plik. Jeśli taki plik już istnieje, to zostaje usunięty. Wskaźnik ustawiony jest na początku zbioru.
RESET
- otwiera istniejący plik, ustawia wskaźnik na początek zbioru i nadpisuje.APPEND
- otwiera zbiór tekstowy ustawia wskaźnik na końcu zbioruProgram Zapisz;
var plik:text;
dane:string;
Assign(plik,'a:opis.txt');
Rewrite(plik);
Write('Podaj tekst o dł <=255 zn');
ReadLn(dane);
Write(plik,dane);
Close(plik);
End.
następny program Program, który w katalogu głównym dysku twardego zakłada plik uses.txt, a następnie pyta o nazwisko i imię. Po wpisaniu nazwiska i imienia dopisuje na koniec istniejącego pliku zdanie "dnia...o godz... przy komputerze pracowała...Program Pliki_data;
Uses crt,dos;
var Plik:Text;
Tekst:String;
var g,m,sek,ssek:Word;
r,mi,d,nrdn:Word;
Begin
ClrScr;
Assign(Plik,'c:\user.txt');
{$I-};
Append(Plik);
{$I+};
If IOResult <> 0 Then Rewrite(Plik);
Write('Podaj nazwisko i imie: ');
ReadLn(Tekst);
GetDate(r,mi,d,nrdn);
GetTime(g,m,sek,ssek);
WriteLn(Plik,'Dnia ',r, ' ',mi,' ',d,' o godz ',g,':',m,' przy komputerze pracowala: ',tekst);
Close(Plik);
End.
na koniec programu Program pyta o inicjały użytkownika ( pierwsze trzy litery nazwiska i pierwszą literę imienia), a następnie sprawdza czy w pliku katalogu głównym dysku c: o nazwie userlist.txt istnieje taki użytkownik. Jeżeli nie istnieje, to do dopisuje go na końcu w nowym wierszu. Pyta o pełne imię i nazwisko i dokonuje jego rejestracji w pliku user.txt. W przypadku gdy użytkownik istnieje na liście, nie ma zapytania.Program DaneOsobowe;
Uses Dos;
Var Plik1,Plik2:Text;
Osoba,Inicjal:String;
godz,min,sek,ssek,rok,mies,dzien,dzient:Word;
Procedure OtwarciePlikow;
Begin
Assign(Plik1,'c:\user.txt');
Assign(Plik2,'c:\userlist.txt');
{$I-}
Append(Plik1);
{$I+}
If IOResult <> 0 Then Rewrite(Plik1);
{$I-}
Reset(Plik2);
{$I+}
If IOResult <> 0 Then Rewrite(Plik2);
begin
Close(Plik2);
Reset(Plik2);
end;
End;
Procedure ZapiszNowegoUzytkownika;
Begin
WriteLn('Jesteś nowym użytkownikiem, muszę cię zarejestrować.');
Write('Podaj swoje imię i nazwisko: ');
ReadLn(Osoba);
Close(Plik2);
Append(Plik2);
WriteLn(Plik2,Inicjal,' ',Osoba);
End;
Function NieIstnieje(Inicjal:String):Boolean;
var Linia:String;
Begin
NieIstnieje:=True;
While not Eof(Plik2) Do
Begin
Readln(Plik2,Linia);
If Inicjal = Copy(Linia,1,4) Then
Begin
NieIstnieje:=False;
Osoba:=Copy(Linia,6,Length(Linia)-5);
End;
End;
End;
Begin
OtwarciePlikow;
Write('Podaj swoje inicjały(3 pierwsze litery nazwiska i pierwsza litera imienia):');
Readln(Inicjal);
If NieIstnieje(Inicjal) Then ZapiszNowegoUzytkownika;
GetTime(godz,min,sek,ssek);
GetDate(rok,mies,dzien,dzient);
WriteLn(Plik1,'Dnia',dzien,'.',mies,'.',rok,' o godz. ',godz,'.',min,' pracę z komputerem rozpoczął ',Osoba);
Close(Plik1);
Close(Plik2);
End.