Programowanie wizualno obiektowe w Delphi

background image

Programowanie Wizualno-Obiektowe
Zajęcia z Delphi: 4

1

Programowanie Wizualno-Obiektowe
(studia zaoczne - inżynieria komputerowa)
Zajęcia z Delphi 4, program 2

Temat:

Zapisywanie rekordów do plików, wstęp do prostych baz danych.


Zadanie:

Program powinien pozwalać na tworzenie 30 elementowej tablicy rekordów
zawierającej informacje o osobach (imię i wiek), a następnie powinien
umożliwiać zapisywanie tablicy do pliku i odczytywanie tej tablicy z pliku.

1.
Otwieramy nowa aplikację File>NewApplication
2.
Zapisujemy projekt przy pomocy File>Save All w katalogu gdzie będzie kompilowany nasz
projekt
3.
Dodajemy odpowiednie komponenty w kolejności

• Menu główne TMainMenu (paleta Standard)

• Komponent zawierający tabelę z wartościami w rekordach TValueListEditor (paleta

Additional)

• Przycisk do dodawania danych TButton (paleta Standard)
• Etykiety opisujące TLabel (paleta Standard)

• Komponent wybierający plik do odczytu tabeli rekordów TOpenDialog (paleta

Dialogs)

• Komponent wybierający plik do zapisu tabeli rekordów TSaveDialog (paleta Dialogs)



background image

Programowanie Wizualno-Obiektowe
Zajęcia z Delphi: 4

2

4.
Należy zaprojektować menu główne (kliknięcie na komponent TMainMenu) tak aby miało
następujące funkcje (skróty klawiszowe należy dodać do każdego elementu menu zmieniając
jego własność ShortCut>Skrót ):

- Plik

- Odczytaj z Pliku (skrót Ctrl+L)

- Zapisz do Pliku (skrót Ctrl+S)

- Koniec

5.
Użytkownik programu ma wpisywać dane n osób do tablicy rekordów. Jeden element tablicy
to rekord zawierający dane jednej osoby, jej imię i wiek. W tym celu definiujemy dwa typy,
jeden rekordowy dotyczący osoby, zaś drugi tablicowy zawierający dane n osób:

type osoba=record

imie:string[10];

wiek:integer;

end;

type osoby=record

a:array [1..n] of osoba;

end;

type plikSpis=file of osoby;

Ilość osób n jest zadeklarowana jako stała. Dodatkowo należy określić ilość/długość
wszystkich zmiennych występujących w rekordach. Jest to potrzebne przy zdefiniowaniu
nowego typu będącego typem plikowym, który opisuje pliki w których zapisuje się rekordy
(pliki rekordowe). Jak widać z powyższego zadania w takim pliku można też zapisywać
zagnieżdżone rekordy. Definicja jest następująca:

type plik=file of typ_zapisywanego_rekordu;

6.
Następnie definiujemy zmienne wykorzystywane w programie. W zmiennej

spis

przechowujemy tablicę rekordów n osób. Zmienna

licznik

mówi ile osób zostało wpisanych

do tablicy. Natomiast

plik

jest zmienną wykorzystywaną do zapisu/odczytu utworzonego

rekordu.

spis:osoby;

plik:plikSpis;

licznik:integer;

7.
Zainicjalizować komponent

ValueListEditor

ustawiając jego właściwość TitleCaptions

(obiekt TStrings) w Object Inspector, aby widoczne były dwa opisane pola ‘imię’ i ‘wiek’.
8.
Obsługując metodę

OnCreate

formularza należy wyzerować licznik wpisanych osób.

Następnie obsługujemy przycisk dotyczący dodawania nowych elementów do spisu osób.
Należy uwzględnić w nim zarówno dodawanie osób, jak i zabezpieczyć się przed
wpisywaniem większej ilości osób niż n. Przycisk ten dodatkowo wypisuje dane osoby w
tabeli

ValueListEditor

wykorzystujące metodę

ValueListEditor.InsertRow(zmienna1,zmienna2,true).

procedure TForm1.Button1Click(Sender: TObject);

var os:osoba;

background image

Programowanie Wizualno-Obiektowe
Zajęcia z Delphi: 4

3

begin

os.imie:=Form1.Edit1.Text;

os.wiek:=StrToInt(Form1.Edit2.Text);

licznik:=licznik+1;

if licznik<=length(spis.a) then

begin

spis.a[licznik].imie:=os.imie;

spis.a[licznik].wiek:=os.wiek;

Form1.ValueListEditor1.InsertRow(os.imie,IntToStr(os.wiek),true);

end

else

ShowMessage('nie moze juz dodac wiecej osob do bazy');

end;

9.
Napisać procedurę obsługującą zapis danych do pliku, wywoływaną po naciśnięciu na opcję
‘Zapis do pliku’ w głównym menu. Wykorzystać komponent SaveDialog.

procedure TForm1.zapiszdopliku1Click(Sender: TObject);

var nazwa:string;i:integer;os:osoba;

begin

if Form1.SaveDialog1.Execute then nazwa:=Form1.SaveDialog1.FileName;

AssignFile(plik,nazwa);

Rewrite(plik);

Write(plik,spis);

CloseFile(plik);

end;

10.
Napisać procedurę obsługującą odczyt danych z pliku, wywoływaną po naciśnięciu na opcję
‘Odczyt z pliku’ w głównym menu. Dane należy zapisać do zmiennej spis, kasując dane z
tabeli i wpisując tam nowe dane odczytane z pliku. Do wykasowania danych z tabeli należy
wykorzystać metodę

ValueListEditor.Strings.Clear;

procedure TForm1.odczytajzpliku1Click(Sender: TObject);

var nazwa:string;i:integer;os:osoba;

begin

if Form1.OpenDialog1.Execute then nazwa:=Form1.OpenDialog1.FileName;

AssignFile(plik,nazwa);

Reset(plik);

Read(plik,spis);

CloseFile(plik);

Form1.ValueListEditor1.Strings.Clear;

for i:=1 to il_osob do

begin

os.imie:=spis.a[i].imie;

os.wiek:=spis.a[i].wiek;

Form1.ValueListEditor1.InsertRow(os.imie,IntToStr(os.wiek),true);

end;

licznik:=il_osob;

end;


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron