rozdzial10
Trochę ciekawostek – na weekend (czego to ludzie nie wymyślą ...
Rozdzia³ 10
[ ]
W poprzednim rozdziel zastosowa³em komunikat ShowMessage.
Mo¿esz stosowaæ taki komunikaty w zapobieganiu ew. b³êdów jakie wykona u¿ytkownik
programu. Konstrukcja jest prosta - najpierw s³ówko ShowMessage, a pó¼niej
tre¶æ komunikatu.
Istniej± jeszcze dwa typy komunikatów.
l
Umie¶æ na formularzu dwa przyciski. W tre¶ci procedury
pierwszego wpisz takie oto polecenie:l
MessageDlg('To jest komunikat pierwszy :)', mtInformation, [mbOK],
0);
Ten komunikat wydaje Ci siê trudniejszy? W pierwszym parametrze
podawana jest tre¶æ komunikatu, w kolejnym jego typ (mo¿e byæ tak¿e mtError
- wtedy obok komunikatu wy¶wietli siê znana ikona Windowsa informuj±ca o b³êdzie)
- w tym wypadku mtInformation - obok komunikatu pojawi siê
"dymek". Parametr [mbOK] informuje, ¿e pojawi siê przycisk OK.
2. W tre¶ci drugiej procedury
umie¶æ taki oto kod:
Application.MessageBox('To jest komunikat 2', 'B³±d
programu.',MB_OK);
W tym komunikacie masz mo¿liwo¶æ ustalenia napisu jaki pojawi
siê w oknie komunikatu na pasku. Mo¿esz te¿ zrobiæ co¶ takiego:
var
Odp : Integer;
begin
Odp:=
Application.MessageBox(
'Wyst±pi³ b³±d w programie. Czy chcesz poczytaæ Help'a?','B³±d',
MB_YESNOCANCEL);
if Odp=IDYES then
{tre¶æ procedury}
if Odp=IDNO then
Close; {zakoñczenie programu}
if Odp=IDCANCEL then
Exit; {zamkniêcie okna komunikatu}
To by by³o na tyle je¶li chodzi o komunikaty. Teraz zajmijmy
siê wyj±tkami.
Pisz±c program, a pó¼niej oddaj±c go do u¿ytku nie jeste¶
w stanie przewidzieæ zachowania osoby korzystaj±cej z tego programu. Zawsze
przecie¿ taka osoba mo¿e zrobiæ co¶, co nie jest tolerowane przez program.
Wtedy a¿eby zapobiec takim przypadkom powiniene¶ stosowaæ wyj±tki. Powróæmy
do programu pisanego w Rozdziale 8. Procedura, która otwiera³a plik video wygl±da³a
nastêpuj±co:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if OpenDialog.Execute then //wywo³anie okna "Otwórz"
Player.FileName:=OpenDialog.FileName;
PLayer.Open;
Player.Display:=Panel1; //Panel1 bêdzie wy¶wietlaczem filmu
Player.DisplayRect:=Panel1.ClientRect; //Dostosowanie rozmiarów filmu do
rozmiaru Panelu
end;
Zmodyfikujmy tê procedurê to takiej oto postaci:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
try
if OpenDialog.Execute then //wywo³anie okna "Otwórz"
Player.FileName:=OpenDialog.FileName;
PLayer.Open;
Player.Display:=Panel1; //Panel1 bêdzie wy¶wietlaczem filmu
Player.DisplayRect:=Panel1.ClientRect; //Dostosowanie rozmiarów filmu do
rozmiaru Panelu
except
ShowMessage('To nie jest plik video lub wyst±pi³ jakikolwiek
inny bl±d');
end;
OBJA¦NIENIE: S³ówko try oznacza "spróbuj".
Program wykonuje instrukcje zawarte po tym s³owie. Je¿eli operacja siê nie
powiedzie nastêpuje wykonanie instrukcji zawartych pod s³owem except.
Istnieje jeszcze s³owo finally, które wykorzystuje siê
wraz ze s³owem try. Instrukcje zawarte po s³owie finally zostan±
wykonane niezale¿nie od czy operacja powiod³a siê, czy te¿ nie.
Zapytasz zapewne "Jaki jest sens stosowania tego s³owa skoro instrukcje po
nim zawarte wykonane bêd± niezale¿nie, czy operacja siê powiedzie?". S³owo
to stosuje siê, aby upewniæ siê, ¿e zostanie zwolniona pamiêæ jaka zosta³a
przydzielona. Np:
var
Pamiec : Pointer;
begin
try
Pamiec:=AllocMem(1024);
finally
FreeMem(Pamiec);
end;
end;
W tym przypadku zostaje przydzielona pamiêæ, która
zostanie zwolniona po zakoñczeniu dzia³ania procedury. To ju¿ wszystko tym
razem. Ju¿ niebawem kolejny kurs. Odwiedzajcie tê stronê czê¶ciej lub
wpiszcie siê, aby byæ informowany emailem o uaktualnieniach.
[ ]