Obsługa plików


Obsługa plików

Pliki tekstowe

Język Delphi posługuje się kilkoma metodami obsługi plików tekstowych.

Zapis i odczyt z pliku tekstowego do pola Memo poprzez metody LoadFromFile i SaveToFile przedstawiony został już wcześniej przy okazji prezentacji pola Memo. Operacje na plikach udostępniają też komponenty OpenDialog i SaveDialog. Metoda ta będzie opisana bliżej przy prezentacji komponentów z karty Dialogs.

Poniżej przedstawiona zostanie metoda dostępu do pliku, podobnie jak w tradycyjnym Pascalu realizująca otwarcie i zamknięcie odpowiednimi procedurami, a zapis i odczyt przez bezpośrednie operowanie na wierszach pliku.

Kolejne czynności związane z obsługą plików tekstowych:

Przykłady realizacji:

Deklaracja zmiennej plikowej typu tekstowego i zmiennej łańcuchowej do operowania na wierszach pliku

var Plik:TextFile;

linia:String[80];

Przypisanie zadeklarowanej zmiennej plikowej do zbioru na dysku

AssignFile(Plik,'C:\Nazwa.txt');

Otwarcie pliku

Rewrite(Plik)lub Reset(Plik) lub Append(Plik)

Operacje typu zapis, odczyt

Writeln (Plik, linia), Write(Plik, linia),

Readln(Plik, linia),

Read(Plik, linia)

Zamknięcie pliku

CloseFile(Plik)

Procedury i funkcje obsługi plików tekstowych

Nagłówek procedury lub funkcji

Działanie

var Plik:TextFile

Deklaracja zmiennej plikowej

AssignFile (var Plik:TextFile, Nazwa: string)

Przypisanie zmiennej plikowej do zbioru

Rewrite (var Plik: TextFile)

Otwarcie po raz pierwszy - założenie pliku

Rewrite (var Plik: TextFile, Dane)

Zapis zawartości zmiennej Dane do pliku. Zmienna może być typu liczbowego lub łańcuchowego (ShortString)

Reset(var Plik: TextFile)

Otwarcie istniejącego pliku do odczytu

Readln (var Plik: TextFile, Dane)

Odczyt wiersza z pliku do zmiennej Dane

CloseFile (var Plik:TextFile)

Zamknięcie pliku

Append (var Plik: TextFile)

Otwarcie pliku tekstowego do dołączania

Zadanie l

Napisz aplikację, która kopiuje istniejący plik tekstowy do pliku o nazwie podanej przez użytkownika.

Zadanie 2

Do aplikacji Dziennik przedstawiającej tabelki StringGrid na kartach notatnika dodaj możliwość wpisywania nazwisk z pliku tekstowego.

Zadanie 3

Napisz aplikację, która wpisuje do pliku kolejne wiersze podawane w polu Edit.

Pliki elementowe

Organizacja plików elementowych jest taka sama, jak w Pascalu. Poniżej, dla przypomnienia, przedstawione są podstawowe operacje w kolejności występowania w programach obsługujących pliki.

Kolejne czynności związane i obsługą plików elementowych:

Przykłady realizacji:

Deklaracja typu elementu pliku

Type Prac=record

Nazwisko:string[20];

//konieczne podanie długości łańcucha

Pensja:Currency;

end;

Deklaracja zmiennej plikowej oraz zmiennej do komunikacji z plikiem

var Plik:File of Prac;

P1:Prac;

Przypisanie zmiennej plikowej do zbioru na dysku

AssignFile(Plik,'C:\Nazwa.ele')

Otwarcie pliku

Rewrite(Plik) lub Reset(Plik)

Operacje typu: zapis przygotowanego rekordu do pliku, odczyt rekordu z pliku

Write(Plik, P1)

Read(Plik,P1)

Zamkniecie pliku

CloseFile(Plik)

Procedury i funkcje wspomagające bezpośredni dostęp do elementów pliku

W poniższej tabelce Typ Pliku oznacza dowolny typ przedstawiający plik elementowy.

Nagłówek procedury:

Działanie:

function FileSize(var Plik: TypPliku): Integer

Zwraca liczbę elementów w pliku

function FilePos(var Plik: TypPliku): Integer

Zwraca numer bieżącej pozycji wskaźnika pliku

procedure Seek(var Plik: TypPliku; N: Longint)

Ustawia wskaźnik pliku przed elementem o numerze N

procedure Truncate(var Plik: TypPliku)

Obcina plik na pozycji wskaźnika pliku

Sposoby otwarcia pliku:

Rewrite(Plik) - tworzy plik o nazwie podanej w procedurze Assign; jeśli plik istnieje, zostanie wymazany

Reset(Plik) - otwiera plik do odczytu/dopisywania, wskaźnik pliku jest na początku pliku. Aby przejść do możliwości dopisywania elementów do pliku, należy wywołać procedurę: Seek(Plik, FileSize(Plik)). Spowoduje to ustawienie wskaźnika pliku na końcu pliku.

Do operacji związanych z plikiem należy dodawać obsługę błędu, aby brak pliku nie spowodował błędu wykonania

Ćwiczenie 2.10

Zadanie aplikacji

Zapis i odczyt elementów z pliku elementowego. Typ elementu pliku:

Prac=record

nazwisko: String[20];

pensja: Currency;

end;

Na formularzu podstawowym, pełniącym rolę sterowania dla aplikacji, umieszczone są dwa przyciski Button Zapis do pliku i Odczyt z pliku. Przyciski te otwierają okna dialogowe utworzone na formularzach typu Dialogs. Pobieranie informacji od użytkownika i wyświetlanie zawartości pliku dokonuje się poprzez pola edycji w formularzach dialogowych.

Nowe umiejętności

Dodawanie formularzy typu Dialogs do aplikacji. Organizacja zapisu i odczytu z pliku elementowego.

  1. Umieść na formularzu dwa przyciski: Zapis do pliku i Odczyt z pliku.

  2. Wybierz z menu: FiIe->New, następnie kartę Dialogs i element Standard Dialog. Do aplikacji zostanie dołączony formularz o nazwie OKBottomDlg pełniący rolę okna dialogowego. W tym projekcie z formularzem związany jest moduł Unit2.pas. Sprawdź klawiszami Shift+F12 obecność formularza w projekcie.

  3. Dodaj do formularza OKBottomDlg przycisk Button z napisem Koniec, dwa okna edycyjne Eidt do wprowadzania pól rekordu i dwie etykiety label do opisu okien. Umieść na etykietach napisy: Nazwisko i Pensja. Zmień właściwość Caption formularza na Zapis do pliku.

  4. W module Unit2 wpisz w miejscu deklaracji typów:

Prac=record

Nazwisko:string[20];

Pensja:currency;

end;

  1. W deklaracji zmiennych globalnych modułu (po słowie var przed słowem Implementation) wpisz deklarację zmiennej plikowej:

Plik: file of Prac;

  1. Ustaw właściwość Caption przycisku OK na Zapisz. Dla zdarzenia OnClick wpisz procedurę, która zapisuje do pliku rekord o polach pobranych z pól edycji:

procedure TOKBottomDlg.OKBtnClick(Sender: TObject);

var

Pl:Prac;

begin

If Edit1.Text<>'' then

//zapis do pliku następuje w sytuacji, gdy okno edycyjne nie jest puste

begin

P1.Nazwisko:=Editl.Text;

P1.Pensja:=StrToCurr(Edit2.Text);

Write(Plik.P1);

Edit1.Text: = ''; //wyczyszczenie okna

Edit2.Text:='0';

end;

end;

  1. Ustaw właściwość Caption przycisku Cancel na Anuluj. Dla zdarzenia OnCIick wpisz procedurę:

Procedure TOKBottomDlg.CancelBtnClick(Sender: TObject);

begin

Edit1.Text: ='' ; //wyczyszczenie okna

Edit2.Text: ='0';

end;

  1. Dla zdarzenia OnActivate formularza OkBottomDlg wpisz procedurę, która otwiera plik do dopisywania:

procedure TOKBottomDlg.FormActivate(Sender: TObject); begin

AssignFile(Plik,'C:\Plik.ele');

try -

Reset(Plik);

except

Rewrite(Pli k);

end;

Seek(Plik,FileSize(Plik)); //przygotowanie pliku do dopisywania

Edit1.Text :=''; //wyczyszczenie pól edycji

Edit2.Text :='0';

end;

Brak pliku podczas pierwszego uruchomienia w środowisku kompilatora spowoduje zawieszenie programu (aby zadziałała obsługa błędu, należy uruchomić program poza środowiskiem). Można przy pierwszym uruchomieniu opatrzyć komentarzem instrukcję try i zastosować otwarcie pliku procedurą Rewrite.

Przy następnych uruchomieniach wracamy do pierwotnej wersji programu.

  1. Do przycisku z napisem Koniec wpisz procedurę-zdarzenie:

procedure TOKBottomDlg.ButtonlClick(Sender: TObject); begin

CloseFile(Plik);

OkBottomDlg.Close; //zamknięcie formularza z dialogiem

end;

  1. Dodaj do formularza podstawowego drugie okno dialogowe. Przyjmie ono nazwę OKBottomDlg1, a odpowiadający mu moduł Unit3.pas.

  2. Ustaw właściwość Caption formularza OKBottomDlg1 na Odczyt z pliku.

  3. Wpisz w module Unit3 po słowie uses deklarację korzystania z modułu Unit2.

  4. Dodaj do formularza dwa okna edycyjne Edit do wyświetlania rekordów z pliku oraz dwie etykiety do opisu tych okien. Ustaw dla okien właściwość:

Enabled False //brak możliwości edycji przy przeglądaniu rekordów

  1. Ustaw właściwość Caption przycisku OK na Następny. Dla zdarzenia OnClick wpisz procedurę:

procedure OKBottomDlgl.OKBtnClick(Sender: TObject);

var P1:Prac;

begin

If FilePos(Plik)<FileSize(Plik) then

//czytanie z pliku przebiega tylko wtedy, gdy jeszcze są rekordy

begin

Read(Plik.P1);

Edit1.Text:=P1.nazwisko;

Edit2.Text:=CurrToStr(P1.pensja):

//zamiana waluty na łańcuch

end;

end; "

  1. Ustaw właściwość Caption przycisku Cancel na Koniec i wpisz procedurę-zdarzenie:

Procedure TOKBottomDlg1.CancelBtnClick(Sender: TObject);

begin

CloseFile(plik);

OkBottomDlg1.Close; //zamknięcie formularza z dialogiem

end;

  1. Dla zdarzenia OnActivate dla formularza OKBottomDlg1 wpisz procedurę wyświetlającą pierwszy rekord:

Procedure TOKBottomD1gl.FormActivate(Sender: TObject):

Var Pl:Prac;

begin

AssignFile(Plik,'C:\plik.ele'):

try

Reset(Plik);

except

ShowMessage(`Brak pliku');

End;

If FilePos(P1ik)<FileSize(Plik) then

begin

Read(Plik.P1);

Edit1.Text:=Pl.Nazwisko;

Edit2.Text:=CurrToStr(P1.Pensja);

end;

end;

  1. Przejdź do modułu Unit3.pas i w sekcji deklaracji modułów po słowie uses wpisz nazwę Dialogs. Jest to wymagane do korzystania z okna ShowMessage.

  2. Dodaj przycisk Button z napisem Pierwszy. Na karcie Events, dla zdarzenia OnClick przycisku wybierz z listy procedurę FormActivate.

  3. Przejdź do formularza Forml (Shift+F12). Wpisz treść procedur:

    1. dla przycisku z napisem Zapis do pliku

OkBottomDlg.Show; //uwidocznienie formularza .......

    1. dla przycisku z napisem Odczyt z pliku

OkBottomDlg1.Show;

Dodaj po słowie uses deklarację korzystania z modułów Unit2 i Unit3.

  1. Uruchom aplikację i sprawdź działanie przycisków.

Ćwiczenie l

Dodaj do aplikacji obsługę błędu na wypadek zdarzenia, gdy operacje zapisu/odczytu pliku nie powiodą się. Użyj instrukcji try...except... finally, aby pozamykać otwarte pliki.

Ćwiczenie 2

Napisz aplikację, która zawiera listę wyboru z nazwiskami uczniów oraz przyciski opcji informujące, do której klasy chodzi dany uczeń. Tak wczytane informacje zapisz w pliku elementowym.

Ćwiczenie 3

Dodaj do zadania przedstawiającego zapis dostawy towarów w tabelkach StringGrid możliwość przekazania informacji z tabelki do pliku elementowego i odtwarzania formacji z pliku do tabelki.

Ćwiczenie 4

Zadanie zbierające informacje do aktualizacji kwestionariusza osobowego uzupełnij o zapis informacji do pliku i możliwość odtwarzania informacji z pliku.

6



Wyszukiwarka

Podobne podstrony:
Obsługa plików w turbo pascalu
Obsługa plików, Programowanie, wykłady C++
Wykład 1, Obsługa plików, Obsługa plików
Obsługa plików w VBA, Akademia Morska Szczecin Nawigacja, uczelnia, ore
9 TurboPascal Obsługa plików w turbo pascalu
Obsługa plików
12 Obsługa plików
Obsługa plików in out
12 Obsługa plików
Trzy dowolne programy do obsługi poczty elektronicznej, formaty plików graficznej
obsluga klienta 1
SO8 Systemy plików
Użytkowanie, Obsługiwanie i Kierowanie Eksploatacją
Formaty plików dźwiękowych
Obsługa interesantów
Piec LSL UB Instrukcja obsługi

więcej podobnych podstron