Podstawowe operacje na plikach

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:

  • zdefiniowane,
  • tekstowe,
  • niezdefiniowane.

powrót do głównego menu

Pojedynczy typ plikowy definiuje się za pomocą konstrukcji:

TYPE identyfikator typu = FILE OF opis typu elementów pliku;

lub

TYPE identyfikator typu = FILE;

Plik tekstowy określony jest za pomocą identyfikatora TEXT. Elementami pliku tekstowego są wiersze podzielone na znaki. Każdy wiersz takiego pliku zakończony jest parą znaków sterujących CR/LF, a bezpośrednio po ostatnim wierszu występuje znak końca CTRL + Z.

Dostęp do pliku uzyskuje się za pomocą zmiennej plikowej. Zmienna powinna być skojarzona z fizycznym zbiorem danych. Do tego celu służy procedura ASSIGN wiążąca nazwę urządzenia (klawiatura, ekran monitora, drukarka, dysk itd.) z którego będzie wprowadzany lub wyprowadzany fizyczny zbió
r danych z daną zmienną plikową. Po skojarzeniu zmiennej plikowej z fizycznym zbiorem danych, należy plik “otworzyć”. Operacja otwarcia pliku ma na celu przygotowanie zmiennej plikowej do wprowadzania lub wyprowadzania poszczególnych elementów. Bezpośredni o po otwarciu plik znajduje się w pozycji początkowej.

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 zbioru
i dop
isuje.

powrót do głównego menu

następny program
Program zakładający na dysku a: plik tekstowy opis.txt.

Program Zapisz;

var plik:text;

dane:string;

Begin

Assign(plik,'a:opis.txt');

Rewrite(plik);

Write('Podaj tekst o dł <=255 zn');

ReadLn(dane);

Write(plik,dane);

Close(plik);

End.

powrót do głównego menu

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.

powrót do głównego menu

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.

powrót do głównego menu