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. 


 [ ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • strefamiszcza.htw.pl
  • Copyright (c) 2009 TrochÄ™ ciekawostek – na weekend (czego to ludzie nie wymyÅ›lÄ… ... | Powered by Wordpress. Fresh News Theme by WooThemes - Premium Wordpress Themes.