Zaawansowane programowanie w (pakiecie) Delphi

Podobne dokumenty
Delphi podstawy programowania. Dialogi

PODSTAWY PROGRAMOWANIA

Delphi Laboratorium 3

Zaawansowane programowanie w (pakiecie) Delphi

Pliki wchodzące w skład projektu Rozmiar formatki, okna. Wyświetlanie okien komunikatów Rzutowanie Konwersja Tworzenie standardowych przycisków

gdy wielomian p(x) jest podzielny bez reszty przez trójmian kwadratowy x rx q. W takim przypadku (5.10)

STRUKTURA MENU STRUKTURA MENU

PODSTAWY PROGRAMOWANIA

ZA CZNIK C: FUNKCJE KLAWISZY I SPOSOBY WPROWADZANIA PARAMETRÓW

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

ZAAWANSOWANE PROGRAMOWANIE W (PAKIECIE) DELPHI

(wymiar macierzy trójk¹tnej jest równy liczbie elementów na g³ównej przek¹tnej). Z twierdzen 1 > 0. Zatem dla zale noœci

Zaawansowane programowanie w (pakiecie) Delphi

III. INTERPOLACJA Ogólne zadanie interpolacji. Niech oznacza funkcjê zmiennej x zale n¹ od n + 1 parametrów tj.

Rys Mo liwe postacie funkcji w metodzie regula falsi

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

ER RATA do ksi¹ ki "Symfonia C++ Stan dard". wydanie 3. (Zawieraj¹ca tak e czysto kosmetyczne poprawki) Sporz¹dzona 4 paÿdziernika 2009.

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

Ćwiczenie 1 Proste aplikacje - podstawowe komponenty.

Turbo Pascal. Zadania z programowania z przykładowymi rozwiązaniami

Warszawa, r.

Wydział: ZiMK Przedmiot: Programowanie - Delphi Semestr 5

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

1. Podstawy budowania wyra e regularnych (Regex)

Instrukcja obs³ugi ciep³omierza AT 539 SUPERCAL

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

INSTRUKCJA U YTKOWNIKA DO KASY SHARP ER-A457P wersja oprogramowania: 27801RAR1C PROGRAMOWANIE FORMATU RAPORTÓW, KROK (PGM2)

LIMATHERM SENSOR Sp. z o.o.

Ogólne Warunki Ubezpieczenia PTU ASSISTANCE I.

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Instrukcja obs³ugi panelu dealera

Szanowny Kliencie, dziêkujemy za zaufanie jakim obdarzy³eœ nasz¹ firmê wybieraj¹c to urz¹dzenie.

Stronicowanie na ¹danie

2.Prawo zachowania masy

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

Środowisko programisty

Instrukcja U ytkownika Systemu Antyplagiatowego Plagiat.pl

EGZAMIN MATURALNY Z INFORMATYKI

Język programowania PASCAL

PERSON Kraków

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Blokady. Model systemu. Charakterystyka blokady

ULTRAFLOW Typ 65-S /65-R

Steelmate - System wspomagaj¹cy parkowanie z oœmioma czujnikami

BEZPRZEWODOWA MYSZ OPTYCZNA FLAT PRO INSTRUKCJA OBS UGI

Zaawansowane programowanie w (pakiecie) Delphi

Instrukcja procesu aktywacji oraz obsługi systemu Banku Internetowego dla BS Mikołajki

Projektowanie bazy danych

PL/SQL. Zaawansowane tematy PL/SQL

Promocja i identyfikacja wizualna projektów współfinansowanych ze środków Europejskiego Funduszu Społecznego

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Grupa bezpieczeństwa kotła KSG / KSG mini

INSTRUKCJA OBSŁUGI URZĄDZENIA: HC8201

API transakcyjne BitMarket.pl

ZA CZNIK B: WSPÓLNE FUNKCJE ADMINISTRACYJNE

RUCH KONTROLI WYBORÓW. Tabele pomocnicze w celu szybkiego i dokładnego ustalenia wyników głosowania w referendum w dniu 6 września 2015 r.

CENTRUM ROZWOJU. ul. Krótka KRAKÓW. ZNAKI I SYGNA Y DROGOWE ZAKTUALIZOWANE Pakiet EXT03 wersja 1.1

INSTRUKCJA Projektowanie plików naświetleń (rozkładówek + rozbiegówek) oraz pliku okładki dla albumu z okładką personalizowaną.

ForPascal Interpreter języka Pascal

Foldery z dokumentami 1.0 dodatek do Symfonia Faktura dla 1 firmy

AMPS Sterownik temperatur Instrukcja obs³ugi

Wstęp do programowania

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Statystyczna analiza danych w programie STATISTICA. Dariusz Gozdowski. Katedra Doświadczalnictwa i Bioinformatyki Wydział Rolnictwa i Biologii SGGW

ZAPYTANIE OFERTOWE NR 1

PODSTAWY PROGRAMOWANIA

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Pascal - wprowadzenie

Podstawy programowania skrót z wykładów:

INSTRUKCJA DO PROGRAMU LICZARKA 2000 v 2.56

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Uchwała Nr XXVII/543/13 Sejmiku Województwa Warmińsko-Mazurskiego z dnia 29 maja 2013 r.

Automatyzacja procesu publikowania w bibliotece cyfrowej

Rozliczenia z NFZ. Ogólne założenia. Spis treści

Podstawy programowania

Spring MVC Andrzej Klusiewicz 1/18

Programowanie Wizualno Obiektowe - zajęcia 5 (PWO_BCPP_5_1) 1 Tworzenie plików pomocy Programowanie Wizualno Obiektowe Zajęcia 5, część 1

Architektura komputerów

Ostatnia cena sprzeda y klienta 1.0 dodatek do Symfonia Faktura dla 1 firmy

Co zrobić, jeśli uważasz, że decyzja w sprawie zasiłku mieszkaniowego lub zasiłku na podatek lokalny jest niewłaściwa

Delphi podstawy programowania. Środowisko Delphi

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Automatyczne generowanie transakcji do WB 1.0 dodatek do Finanse i Ksi gowo ERP dla 1 firmy

Kabel do transmisji danych CA-42 krótka instrukcja instalacji

Podstawy programowania sterowników GeFanuc

Kancelaris - Zmiany w wersji 2.50

Modem Thomson SpeedTouch 330

Po³¹czenie iphone'a/ipad a do Smart Multishare USB

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Instrukcja instalacji oraz wykorzystania podpisu cyfrowego

Właściwości i metody obiektu Comment Właściwości

Procedura nadawania uprawnień do potwierdzania Profili Zaufanych w Urzędzie Gminy w Ryjewie

O autorze... 9 Wprowadzenie... 11

WYJASNIENIA I MODYFIKACJA SPECYFIKACJI ISTOTNYCH WARUNKÓW ZAMÓWIENIA

Procedura nadawania uprawnień do potwierdzania, przedłuŝania waŝności i uniewaŝniania profili zaufanych epuap. Załącznik nr 1

Regulamin Krêgów Harcerstwa Starszego ZHR

Miejski System Zarządzania - Katowicka Infrastruktura Informacji Przestrzennej

Transkrypt:

DEL420 Zaawansowane programowanie w (pakiecie) Delphi Andrzej Marciniak Prezentacja multimedialna przygotowana za pomoc¹ systemu Corel Presentations 11 i X3 Copyright 2004-2010 by Andrzej Marciniak DEL-2(1 z 60)

Na poprzednim wyk³adzie... ogólne informacje o pakiecie Borland Delphi nieco historii ogólna charakterystyka pakietu Borland Delphi podstawowe pojêcia zwi¹zane z konstruowaniem programów w zintegrowanym systemie programowania przegl¹d konstrukcji jêzyka Delphi Pascal (program, modu³, biblioteka, funkcje i procedury, klasy i obiekty, typy danych, zmienne, instrukcje) DEL-2(2 z 60)

Na tym wyk³adzie... obs³uga warunków i stanów wyj¹tkowych instrukcja wywo³ywania stanów wyj¹tkowych (raise) instrukcja try... except instrukcja try... finally predefiniowane warunki i stany wyj¹tkowe okienka z komunikatami DEL-2(3 z 60)

Warunkiem i (lub) stanem wyj¹tkowym nazywamy wyst¹pienie b³êdu lub innego zdarzenia, które przerywa normalne wykonywanie programu. Prawid³owa obs³uga warunków i stanów wyj¹tkowych w programie (module, bibliotece ³¹czonej dynamicznie) pozwala na podniesienie jego niezawodnoœci i uczynienie go bardziej odpornym na ewentualne b³êdy wykonania. W jêzyku Delphi Pascal warunki i stany wyj¹tkowe s¹ reprezentowane przez typy klasowe. Obs³ugê b³êdów, które normalnie powoduj¹ przerwanie wykonywania programu, zapewnia modu³ SysUtils ḊEL-2(4 z 60)

Z obs³ug¹ warunków i stanów wyj¹tkowych s¹ zwi¹zane trzy instrukcje: wywo³ywania stanów wyj¹tkowych (raise), try...except, try...finally. DEL-2(5 z 60)

Instrukcja wywo³ywania stanów wyj¹tkowych Mo e mieæ trzy ró ne postacie: raise stan-wyj¹tkowy raise stan-wyj¹tkowy at adres lub raise Stan wyj¹tkowy oznacza tu obiekt (wyra enie typu klasowego). Na ogó³ nie podaje siê w tym miejscu zmiennej typu klasowego, lecz wywo³uje konstruktor odpowiedniego typu klasowego reprezentuj¹cego warunek lub stan wyj¹tkowy. W ywo³anie warunku powoduje utworzenie obiektu-warunku, jego obs³ugê, a nastêpnie automatyczne usuniêcie tego obiektu-warunku za pomoc¹ jego destruktora. DEL-2(6 z 60)

Instrukcja wywo³ywania stanów wyj¹tkowych Po wykonaniu instrukcji raise wystêpuj¹cej w instrukcji try...except (bêdzie dalej) pomiêdzy s³owami try i except, sterowanie nie jest przekazywane do instrukcji wystêpuj¹cej bezpoœrednio po niej. Instrukcja raise przekazuje sterowanie do bloku obs³ugi warunków dotycz¹cego warunków danej klasy (bloki takie wystêpuj¹ po s³owie except) i nastêpuje wykonanie instrukcji wchodz¹cych w sk³ad tego bloku. Gdy instrukcja raise zostanie umieszczona poza instrukcj¹ try...except, jej wykonanie polega zwykle na zatrzymaniu programu i wyœwietleniu stosownego komunikatu. DEL-2(7 z 60)

Instrukcja wywo³ywania stanów wyj¹tkowych Wywo³anie okreœlonego warunku powoduje te przypisanie zmiennej standardowej ErrorAddr, zadeklarowanej w module System, adresu miejsca programu, w którym to wywo³anie nast¹pi³o. W bloku obs³ugi warunku mo na odwo³aæ siê do tej zmiennej podaj¹c, na przyk³ad, u ytkownikowi programu adres miejsca wyst¹pienia b³êdu. Jeœli adres ten ma byæ inny ni miejsce wyst¹pienia b³êdu, to mo na go okreœliæ za pomoc¹ klauzuli at adres w której adres oznacza w ogólnoœci wyra enie adresowe (typu Pointer), a wiêc np. zmienn¹ typu wskaÿnikowego. DEL-2(8 z 60)

Instrukcja wywo³ywania stanów wyj¹tkowych Trzecia postaæ instrukcji raise, sk³adaj¹ca siê z samego s³owa kluczowego, s³u y do ponownego wywo³ania bie ¹cego warunku i mo e byæ u yta tylko w bloku except instrukcji try...except (bêdzie dalej). DEL-2(9 z 60)

Instrukcja wywo³ywania stanów wyj¹tkowych Przyk³ad Za³ó my, e w pewnym miejscu programu zmienna liczba typu Integer mo e mieæ tylko wartoœci ca³kowite z przedzia³u [ 10, 10]. Standardowym warunkiem przekroczenia zakresu dozwolonych wartoœci ca³kowitych jest EIntOverflow. Wykorzystanie tego warunku do wyœwietlenia komunikatu o niedozwolonej wartoœci zmiennej liczba mo e mieæ postaæ if (liczba< 10) or (liczba>10) then raise EIntOverflow.Create ( Wartoœæ zmiennej liczba poza + dozwolonym zakresem ); DEL-2(10 z 60)

Instrukcja wywo³ywania stanów wyj¹tkowych Przyk³ad Jeœli w chwili wykonywania powy szej instrukcji wartoœæ zmiennej liczba nie bêdzie nale a³a do podanego przedzia³u, to standardowym dzia³aniem bêdzie wyœwietlenie na ekranie okienka Error postaci Project test.exe raised exception class EintOverflow with message Wartoœæ zmiennej liczba poza dozwolonym zakresem. Process stopped. Use Step or Run to continue. DEL-2(11 z 60)

Instrukcja try...except Jest podstawow¹ instrukcj¹ obs³ugi warunków. Powoduje sekwencyjne wykonywanie instrukcji wystêpuj¹cych pomiêdzy s³owami try i except. Jeœli podczas ich wykonywania nie zostanie wywo³any aden warunek, to ci¹g instrukcji wystêpuj¹cy po s³owie except jest ignorowany i sterowanie jest przekazywane do instrukcji wystêpuj¹cej bezpoœrednio po s³owie end koñcz¹cym instrukcjê try...except (jakby instrukcji try...except nie by³o). DEL-2(12 z 60)

Instrukcja try...except Ogólna postaæ instrukcji jest nastêpuj¹ca: try sekwencja-instrukcji except blok-obs³ugi-warunków end gdzie blok obs³ugi warunków mo e sk³adaæ siê albo z sekwencji instrukcji, albo z klauzul on postaci (vérte) DEL-2(13 z 60)

Instrukcja try...except on identyfikator-warunku do instrukcja przy czym ostatnia klauzula mo e zawieraæ jednostkê else: on identyfikator-warunku do instrukcja else sekwencja-instrukcji Poszczególne klauzule on oddziela siê œrednikami. Identyfikator warunku oznacza albo identyfikator typu klasowego, albo nazwê typu klasowego poprzedzon¹ dwukropkiem oraz identyfikatorem, który bêdzie oznacza³ obiekt-warunek w instrukcji podanej po s³owie do. DEL-2(14 z 60)

Instrukcja try...except Blok obs³ugi warunków mo e byæ uaktywniony wskutek: wyst¹pienia b³êdu wœród sekwencji instrukcji poddawanych próbie, tj. wœród instrukcji wystêpuj¹cych pomiêdzy s³owami try i except, za pomoc¹ instrukcji raise zamieszczonej wœród tej sekwencji, wskutek wywo³ania procedury (funkcji, metody) z tej sekwencji, której wykonanie spowoduje b³¹d. DEL-2(15 z 60)

Instrukcja try...except W zale noœci od jednej z trzech postaci bloku obs³ugi warunków (sekwencja instrukcji, klauzule on, klauzule on z jednostk¹ else) dzia³anie instrukcji jest ró ne zostanie przedstawione na przyk³adach. Bez wzglêdu na to, który ze sposobów obs³ugi wyst¹pi, po obs³udze obiekt-warunek zostanie automatycznie usuniêty z pamiêci przez wywo³anie jego destruktora. DEL-2(16 z 60)

Instrukcja try...except Przyk³ady Rozwa my nastêpuj¹cy program: program program9; {$APPTYPE CONSOLE} uses SysUtils; var i, j, k : Integer; begin i:=0; k:=1; j:=k div i; {*} Writeln (j); Readln end. Jego wykonanie spowoduje pojawienie siê na chwilê symulowanego okienka tekstowego, szybkie jego zamkniêcie i zakoñczenie wykonywania programu. Takie dzia³anie programu jest spowodowane wyst¹pieniem b³êdu dzielenia przez zero w wierszu oznaczonym gwiazdk¹. DEL-2(17 z 60)

Instrukcja try...except Przyk³ady W celu obs³ugi tego b³êdu mo na zastosowaæ instrukcjê try...except i instrukcje czêœci wykonawczej programu zapisaæ w postaci: try i:=0; k:=1; j:=k div i; {*} Writeln (j) except on EDivByZero do ShowMessage ( Dzielenie ca³kowite przez zero ) end; Readln DEL-2(18 z 60)

Instrukcja try...except Przyk³ady Uruchomienie tak zmodyfikowanego programu w œrodowisku Delphi spowoduje (przy standardowych parametrach pracy kompilatora) wyœwietlenie okienka z komunikatem? Nie jest to jednak komunikat wyœwietlony przez procedurê ShowMessage, lecz komunikat œrodowiska Delphi (dlaczego?). DEL-2(19 z 60)

Instrukcja try...except Przyk³ady Wyœwietlenie zaprogramowanej informacji uzyskamy po ponownym zainicjowaniu polecenia Run (lub Step): Gdybyœmy program program9 uruchomili bezpoœrednio w œrodowisku Windows, to na ekranie pojawi³oby siê tylko ostatnie okienko. DEL-2(20 z 60)

Instrukcja try...except Przyk³ady Jeœli instrukcjê try...except zapiszemy nastêpuj¹co: try i:=0; k:=1; j:=k div i; Writeln (j) except on EOutOfMemory do ShowMessage ( Brak pamiêci ) else ShowMessage ( Wyst¹pi³ b³¹d inny ni brak pamiêci ) end; to zostanie wykonana instrukcja po s³owie else (dlaczego?). DEL-2(21 z 60)

Instrukcja try...except Przyk³ady Zapisanie instrukcji try...except w postaci try i:=0; k:=1; j:=k div i; Writeln (j) except ShowMessage ( Wyst¹pi³ jakiœ b³¹d ) end; spowoduje wyœwietlenie nastêpuj¹cego okienka z komunikatem: DEL-2(22 z 60)

Instrukcja try...except W pewnych przypadkach mo e byæ konieczne ponowne wywo³anie warunku pomimo jego (czêœciowej) obs³ugi. Do tego celu stosuje siê instrukcjê wywo³ania warunku sk³adaj¹c¹ siê z samego s³owa kluczowego raise instrukcja try...except ma wówczas postaæ try sekwencja-instrukcji except sekwencja-instrukcji raise end DEL-2(23 z 60)

Instrukcja try...except Przyk³ad Podczas wykonywania funkcji wyst¹pienie b³êdu dzielenia przez zero (a tak e dowolnego innego) spowoduje wyœwietlenie komunikatu podanego w wywo³aniu procedury ShowMessage. Instrukcja raise uaktywni jednak ponownie warunek b³êdu. Poniewa wywo³anie funkcji k_div_i nast¹pi³o wewn¹trz instrukcji try...except programu, po powrocie do niego rozpocznie siê znowu poszukiwanie sekwencji mog¹cej obs³u yæ ten warunek. Odpowiedni¹ sekwencj¹ jest tu klauzula on EDivByZero, a wiêc zostanie wyœwietlony drugi komunikat: Dzielenie przez zero. Rozwa my nastêpuj¹cy program: program program10; {$APPTYPE CONSOLE} uses SysUtils, Dialogs; var i, j, k : Integer; function k_div_i (k, i : Integer) : Integer; begin try if k>i then Result:=k div i else Result:=i div k except ShowMessage ( Wyst¹pi³ jakiœ b³¹d ); raise end end; begin try i:=0; k:=1; j:= k_div_i(k, i); Writeln (j) except on EDivByZero do ShowMessage ( Dzielenie przez zero ) else ShowMessage ( Nie zidentyfikowano b³êdu ) end; Readln end. DEL-2(24 z 60)

Instrukcja try...except Warunki b³êdów wywo³ywane i obs³ugiwane w bloku obs³ugi warunków, tj. po s³owie except w instrukcji try...except, nie oddzia³uj¹ na warunek oryginalny, tzn. warunek, dla którego blok obs³ugi zosta³ uaktywniony. Jeœli jednak warunek wywo³any w bloku obs³ugi zostanie przeniesiony poza ten blok, to warunek oryginalny zostanie zagubiony. DEL-2(25 z 60)

Instrukcja try...except Przyk³ad Niech ECotangensError oznacza klasê reprezentuj¹c¹ warunek, zdefiniowan¹ jako potomek standardowej klasy EMathError: type ECotangensError = class (EMathError); i niech cotangens i x oznaczaj¹ zmienne typu Extended. Jeœli obliczenie wartoœci zmiennej cotangens zaprogramujemynastêpuj¹co: try cotangens:=cos(x)/sin(x) except on EZeroDivide do raise ECotangensError.Create ( B³êdny argument przy obliczaniu wartoœci + zmiennej cotangens ) end; to w przypadku wyst¹pienia warunku EZeroDivide blok jego obs³ugi wywo³a warunek ECotangensError i na ekranie uka e siê okienko Error z odpowiednim komunikatem. Wyœwietlenie tego okienka nie oznacza jednak obs³ugi warunku ECotangensError, który zostanie przekazany na zewn¹trz instrukcji try z jednoczesnym anulowaniem warunku EZeroDivide (ten ostatni warunek uwa a siê za obs³u ony, gdy odszukano dla niego odpowiedni¹ sekwencjê obs³ugi klauzulê on). DEL-2(26 z 60)

Instrukcja try...finally Instrukcjê tê wykorzystuje siê w przypadku, gdy bez wzglêdu na wyst¹pienie jakiegoœ warunku nale y wykonaæ pewne instrukcje, przy czym jeœli warunek wyst¹pi, to nale y go ponownie wywo³aæ. Postaæ tej instrukcji jest nastêpuj¹ca: try sekwencja-instrukcji finally sekwencja-instrukcji end DEL-2(27 z 60)

Instrukcja try...finally Instrukcja powoduje wykonywanie instrukcji wystêpuj¹cych pomiêdzy s³owami try i finally w kolejnoœci sekwencyjnej. Jeœli adna z tych instrukcji nie zainicjuje adnego warunku b³êdu, to zostan¹ wykonane instrukcje znajduj¹ce siê po s³owie finally, po czym sterowanie zostanie przekazane do instrukcji bezpoœrednio nastêpnej po instrukcji try...finally. try sekwencja-instrukcji finally sekwencja-instrukcji end DEL-2(28 z 60)

Instrukcja try...finally Jeœli któraœ z instrukcji pomiêdzy s³owami try i finally spowoduje wyst¹pienie warunku b³êdu, to sterowanie jest przekazywane do bloku finally, w którym wykonywane s¹ kolejno poszczególne instrukcje, a nastêpnie warunek jest ponownie wywo³ywany (mo e wiêc byæ obs³u ony na zewn¹trz instrukcji try...finally). try sekwencja-instrukcji finally sekwencja-instrukcji end Wywo³anie innego warunku w tym bloku powoduje zagubienie warunku oryginalnego. DEL-2(29 z 60)

Instrukcja try...finally Dzia³ania instrukcji try...finally nie nale y myliæ z instrukcj¹ try...except, w której bloku except wystêpuje instrukcja raise (okreœlona samym s³owem raise). W przypadku instrukcji try...finally instrukcje wystêpuj¹ce po s³owie finally zostan¹ zawsze wykonane, a w przypadku podanego wariantu instrukcji try...except wykonanie instrukcji znajduj¹cych siê po s³owie except nast¹pi tylko wówczas, gdy wczeœniej (pomiêdzy s³owami try i except) wyst¹pi jakiœ warunek. DEL-2(30 z 60)

Instrukcja try...finally Przyk³ady Rozwa my fragment programu (tekstowego): tu nie ma obs³ugi b³êdu tu jest obs³uga b³êdu i:=2; j:=0; try try k:=i div j finally k:=0 end except on EdivByZero do ShowMessage ( B³¹d ) end; Writeln (k); gdzie i, j i k oznaczaj¹ zmienne typu Integer. Na ekranie uka e siê najpierw okienko z komunikatem B³¹d, a nastêpnie (wsymulowanym okienku tekstowym) liczba 0. DEL-2(31 z 60)

Instrukcja try...finally Przyk³ady Instrukcja try...finally jest czêsto wykorzystywana przy wykonywaniu operacji na plikach. Zwykle plik powinien byæ zamkniêty bez wzglêdu na to, czy jego przetwarzanie przebieg³o pomyœlnie czy te nie. Operacje te mo na zaprogramowaæ korzystaj¹c z nastêpuj¹cego schematu: Reset (plik); otwarcie pliku try... przetwarzanie pliku finally CloseFile (plik) zamkniêcie pliku end; Co nale y dodaæ, aby obs³u yæ ewentualny b³¹d EInOutError? DEL-2(32 z 60)

Predefiniowane warunki i stany wyj¹tkowe Typem klasowym nadrzêdnym w stosunku do wszystkich predefiniowanych klas reprezentuj¹cych warunki i stany wyj¹tkowe jest typ Exception zdefiniowany w module SysUtils. Wa niejsze predefiniowane typy klasowe reprezentuj¹ce warunki i stany wyj¹tkowe: EAccessViolation próba dostêpu do miejsca pamiêci o niedozwolonym adresie (np. próba dostêpu do obiektu poprzez niezainicjowane odwo³anie do niego lub dereferencja niezainicjowanego wskaÿnika) EConvertError funkcja nie mo e przeprowadziæ ¹danej konwersji EDivByZero przy dzieleniu ca³kowitym dzielnik ma wartoœæ 0 DEL-2(33 z 60)

Predefiniowane warunki i stany wyj¹tkowe Wa niejsze predefiniowane typy klasowe reprezentuj¹ce warunki i stany wyj¹tkowe (cd.): EExternalException warunek jest wywo³ywany w przypadku wyst¹pienia b³êdu systemu operacyjnego (Windows), dla którego nie ma odpowiednika wœród predefiniowanych klas jêzyka Delphi Pascal EInOutError b³¹d podczas wykonywania operacji wejœciawyjœcia EIntOverflow przekroczenie zakresu dozwolonych wartoœci dla liczb ca³kowitych EInvalidOp próba wykonania niedozwolonej operacji arytmetycznej (np. próba obliczenia pierwiastka z liczby ujemnej) DEL-2(34 z 60)

Predefiniowane warunki i stany wyj¹tkowe Wa niejsze predefiniowane typy klasowe reprezentuj¹ce warunki i stany wyj¹tkowe (cd.): EInvalidPointer próba zwolnienia b³êdnego wskaÿnika EOutOfMemory za ma³o pamiêci do wykonania operacji EOverflow wyst¹pienie nadmiaru przy wykonywaniu operacji zmiennoprzecinkowej ERangeError przekroczenie zakresu indeksów EStackOverflow stos przeznaczony dla programu nie mo e byæ powiêkszony lub rozmiar stosu osi¹gn¹³ górn¹ granicê EUnderflow wyst¹pienie niedomiaru przy wykonywaniu operacji zmiennoprzecinkowej DEL-2(35 z 60)

Predefiniowane warunki i stany wyj¹tkowe Wa niejsze predefiniowane typy klasowe reprezentuj¹ce warunki i stany wyj¹tkowe (cd.): EVariantError b³êdne wykonanie operacji na wartoœciach typu Variant EZeroDivide w operacji dzielenia dzielnik ma wartoœæ 0 DEL-2(36 z 60)

Okienka z komunikatami Do wyœwietlania okienek z komunikatami s³u ¹ procedury: ShowMessage, ShowMessageFmt, ShowMessagePos, funkcje: MessageDlg, MessageDlgPos, MessageDlgPosHelp, CreateMessageDialog, zdefiniowane w module Dialogs. DEL-2(37 z 60)

Okienka z komunikatami Do wyœwietlania okienek z komunikatami s³u y metoda MessageBox typu TApplication (typ ten jest zdefiniowany w module Forms). Do wyœwietlania okienek z informacjami o wyst¹pieniach warunków b³êdów i stanów wyj¹tkowych jest przeznaczona procedura ShowException zdefiniowana w module SysUtils oraz metoda o takiej samej nazwie typu TApplication. DEL-2(38 z 60)

Okienka z komunikatami Procedura ShowMessage Procedura ShowMessage powoduje wyœwietlenie okienka z komunikatem i przyciskiem OK. Tytu³em tego okienka jest nazwa zbioru wykonywalnego programu. Wywo³anie procedury ShowMessage ma postaæ ShowMessage (³añcuch) gdzie ³añcuch oznacza w ogólnoœci wyra enie typu string, którego wartoœci¹ jest treœæ komunikatu wyœwietlanego w okienku. DEL-2(39 z 60)

Okienka z komunikatami Procedura ShowMessage Przyk³ad ShowMessage ( Lubiê programowaæ w jêzyku + Object Pascal ); DEL-2(40 z 60)

Okienka z komunikatami Procedura ShowMessageFmt Za pomoc¹ procedury ShowMessageFmt o wywo³aniu ShowMessageFmt (³añcuch, argumenty) mo na wyœwietliæ podobne okienko, jak za pomoc¹ procedury ShowMessage, ale ze sformatowanym ³añcuchem. Argumenty wywo³ania funkcji ShowMessageFmt s¹ takie same, jak funkcji Format (z modu³u SysUtils). DEL-2(41 z 60)

Okienka z komunikatami Procedura ShowMessageFmt Przyk³ad ShowMessageFmt ( Kupi³em pakiet %s za %m, [ Delphi 5 Professional, 1750.00]); Stosuj¹c jako drugi argument inny konstruktor tablicy otwartej (np. [ C++ Builder 4, 1800.00] ), mo emy zmieniæ nazwê pakietu i jego cenê. DEL-2(42 z 60)

Okienka z komunikatami Procedura ShowMessagePos Procedury ShowMessage i ShowMessageFmt powoduj¹ wyœwietlenie okienka z komunikatem na œrodku ekranu. Za pomoc¹ procedury ShowMessagePos mo na spowodowaæ wyœwietlenie takiego samego okienka w okreœlonym miejscu ekranu. Wywo³anie: ShowMessagePos (³añuch, x, y) gdzie x i y oznaczaj¹ wyra enia typu Integer, powoduje wyœwietlenie okienka tak, by jego lewy górny naro nik znajdowa³ siê na ekranie w miejscu o wspó³rzêdnych (absolutnych) x i y. DEL-2(43 z 60)

Okienka z komunikatami Funkcje MessageDlg i MessageDlgPos O wiele wiêksze mo liwoœci redagowania okienek z komunikatami daj¹ dwie funkcje: MessageDlg (³añcuch, rodzaj, przyciski, kontekst- pomocy) i MessageDlgPos (³añcuch, rodzaj, przyciski, kontekst- pomocy, x, y) Pierwsza funkcja wyœwietla okienko na œrodku ekranu, a druga powoduje wyœwietlenie okienka w taki sposób, e jego lewy górny naro nik zostanie umiejscowiony na ekranie w punkcie o wspó³rzêdnych absolutnych ( x, y). DEL-2(44 z 60)

Okienka z komunikatami Funkcje MessageDlg i MessageDlgPos W wywo³aniach obu funkcji pierwszy argument ( ³añcuch) definiuje wyœwietlany komunikat, a kontekst pomocy (wyra enie typu Longint) okreœla numer okienka z pomocnicz¹ informacj¹ kontekstow¹, które przy aktywnoœci okienka z komunikatem bêdzie wyœwietlone na ekranie po naciœniêciu klawisza F1. W przypadku, gdy numer kontekstu pomocy jest równy 0, okienko dziedziczy numer z nadrzêdnego elementu steruj¹cego (jeœli takiego nie ma, okienko z informacjami pomocniczymi nie bêdzie wyœwietlone). DEL-2(45 z 60)

Okienka z komunikatami Funkcje MessageDlg i MessageDlgPos Argumenty rodzaj i przyciski s³u ¹ do okreœlenia postaci okienka z komunikatem. Argument rodzaj jest predefiniowanego typu wyliczeniowego TMsgDlgType okreœlonego (w module Dialogs) nastêpuj¹co: type TMsgDlgType = (mtwarning, mterror, mtinformation, mtconfirmation, mtcustom); DEL-2(46 z 60)

Okienka z komunikatami Funkcje MessageDlg i MessageDlgPos Poszczególne elementy tego typu oznaczaj¹ rodzaj komunikatu wyœwietlanego w okienku, co ma wp³yw na jego tytu³, a zarazem piktogram (znak graficzny bêd¹cy map¹ bitow¹): mtwarning ostrze enie (okienko zawiera znak wykrzyknika w ó³tym trójk¹cie, a jego tytu³em jest Warning), mterror b³¹d (okienko o tytule Error z bia³ym krzy ykiem na czerwonym tle), mtinformation informacja (okienko zawiera niebiesk¹ literê i, a jego tytu³em jest Information), mtconfirmation zapytanie (okienko o tytule Confirmation z niebieskim znakiem zapytania), mtcustom okienko bez piktogramu o tytule bêd¹cym nazw¹ zbioru wykonywalnego programu. DEL-2(47 z 60)

Okienka z komunikatami Funkcje MessageDlg i MessageDlgPos Typem argumentu przyciski jest typ zbiorowy TMsgDlgButtons, którego typem bazowym jest typ wyliczeniowy TMsgDlgBtn. Definicje tych typów (w module Dialogs) s¹ nastêpuj¹ce: type TMsgDlgBtn = (mbyes, mbno, mbok, mbcancel, mbabort, mbretry, mbignore, mball, mbhelp); TMsgDlgButtons = set of TMsgDlgBtn; Poszczególne elementy typu TMsgDlgBtn s³u ¹ do oznaczenia rodzaju przycisku wyœwietlanego w okienku. DEL-2(48 z 60)

Okienka z komunikatami Funkcje MessageDlg i MessageDlgPos W module Dialogs zdefiniowano tak e trzy sta³e, które predefiniuj¹ zbiory z dwoma lub trzema najczêœciej wystêpuj¹cymi zestawami przycisków: mbyesnocancel zbiór definiuj¹cy przyciski mbokcancel z napisami Yes, No i Cancel, zbiór okreœlaj¹cy przyciski z napisami OK i Cancel, mbabortretryignore zbiór definiuj¹cy przyciski z napisami Abort, Retry, Ignore. Sta³e te oznaczaj¹ odpowiednie zbiory, a wiêc ich u ycie jako argumentu przyciski nie wymaga stosowania nawiasów kwadratowych. DEL-2(49 z 60)

Okienka z komunikatami Funkcje MessageDlg i MessageDlgPos Wartoœci¹ funkcji MessageDlg (a tak e funkcji MessageDlgPos) jest wartoœæ typu Word okreœlaj¹ca, który z przycisków powoduj¹cych zamkniêcie okienka zosta³ naciœniêty (zamkniêcia nie powoduje przycisk z napisem Help). Wartoœæ tê mo na sprawdziæ przez jej przyrównanie do jednej ze sta³ych: const mrnone = 0; nie naciœniêto adnego przycisku mrok = idok; naciœniêto przycisk OK mrcancel = idcancel; naciœniêto przycisk Cancel (lub zamkniêto okienko za pomoc¹ piktogramuzamkniêcia) mrabort = idabort; naciœniêto przycisk Abort mrretry = idretry; naciœniêto przycisk Retry mrignore = idignore; naciœniêto przycisk Ignore mryes = idyes; naciœniêto przycisk Yes mrno = idno; naciœniêto przycisk No mrall = mrno+1; naciœniêto przycisk All mrnotoall = mrall+1; naciœniêto przycisk No to All mryestoall = mrnotoall +1; naciœniêto przycisk Yes to All DEL-2(50 z 60)

Okienka z komunikatami Funkcje MessageDlg i MessageDlgPos Przyk³ady 1) MessageDlg ( Nie zakoñczono wprowadzania + danych, mtwarning, mbabortretryignore, 0) DEL-2(51 z 60)

Okienka z komunikatami Funkcje MessageDlg i MessageDlgPos Przyk³ady 2) MessageDlgPos ( Czy umiesz ju programowaæ + w jêzyku Object Pascal?, mtconfirmation, [mbyes, mbno], 0, 200, 100) Lewy górny naro nik okienka bêdzie znajdowa³ siê w punkcie o wspó³rzêdnych ekranowych (200, 100). DEL-2(52 z 60)

Okienka z komunikatami Funkcja MessageDlgPosHelp W funkcjach MessageDlg i MessageDlgPos ewentualne wyœwietlanie informacji pomocniczych wymaga przygotowania systemu pomocy i podania numeru odpowiedniej informacji kontekstowej ze zbioru pomocy skojarzonego z danym programem. Informacje te mog¹ byæ pobierane tak e z innego (odpowiednio przygotowanego) zbioru pomocy za pomoc¹ funkcji MessageDlgPosHelp o wywo³aniu MessageDlgPosHelp (³añcuch, rodzaj, przyciski, kontekst-pomocy, x, y, nazwa-zbioru-pomocy) DEL-2(53 z 60)

Okienka z komunikatami Funkcja CreateMessageDialog Jeœli jakieœ okienko z komunikatem jest wyœwietlane wiele razy w programie, to zamiast wielokrotnego wykonywania którejœ z podanych bli ej funkcji lub procedur wygodniejsze jest utworzenie odpowiedniego obiektu-okienka dialogowego za pomoc¹ funkcji CreateMessageDialog. Jej wywo³anie jest nastêpuj¹ce: CreateMessageDialog (³añcuch, rodzaj, przyciski) przy czym wszystkie argumenty poznaliœmy przy okazji opisywania poprzednich funkcji. DEL-2(54 z 60)

Okienka z komunikatami Funkcja CreateMessageDialog Przyk³ad Jeœli zadeklarujemy zmienn¹: var komunikat : TForm; to po wykonaniu instrukcji komunikat:=createmessagedialog ( Lubiê programowaæ + w jêzyku Object Pascal, mtinformation, [mbok]); ka dorazowe wykonanie instrukcji komunikat.showmodal; spowoduje pojawienie siê na ekranie nastêpuj¹cego okienka: Zwolnienie pamiêci zajêtej przez obiekt komunikat uzyskamy przez wywo³anie komunikat.free; DEL-2(55 z 60)

Okienka z komunikatami Metoda MessageBox Metoda-funkcja MessageBox typu TApplication umo liwia dobór przycisków w okienku, a ponadto okreœlenie tytu³u okienka. Jej wywo³anie ma postaæ zmienna-klasowa.messagebox (³añcuch, nag³ówek, charakterystyki) gdzie zmienna klasowa powinna byæ zmienn¹ typu TApplication (najczêœciej stosuje siê predefiniowan¹ zmienn¹ Application). añcuch (typu PChar) okreœla tekst wyœwietlany w okienku, a nag³ówek (te typu PChar) tytu³ okienka. Za pomoc¹ charakterystyk (typu Word) okreœla siê nie tylko przyciski, które maj¹ wyst¹piæ w okienku, ale tak e wyœwietlane piktogramy, przyciski domyœlne, sposób justowania tekstu itp. DEL-2(56 z 60)

Okienka z komunikatami Metoda MessageBox Do okreœlenia charakterystyk s³u ¹ sta³e o przedrostku mb_ zdefiniowane w module Windows (zob. np. system pomocy). Sta³e te mog¹ byæ ³¹czone za pomoc¹ operatora or. Wartoœæ funkcji MessageBox (typu Integer) okreœla wybór odpowiedniego przycisku w okienku. Do zbadania tej wartoœci mo na u yæ jednej ze sta³ych o przedrostku id lub id_, które s¹ tak e zdefiniowane w module Windows. DEL-2(57 z 60)

Okienka z komunikatami Metoda MessageBox Przyk³ad Application.MessageBox ( Brak pamiêci do + wykonania wszystkich operacji, Ostrze enie, mb_ok or mb_iconwarning); DEL-2(58 z 60)

Okienka z komunikatami Procedura i metoda ShowException Procedura ShowException s³u y do wyœwietlania komunikatu opisuj¹cego zaistnia³y warunek b³êdu lub stan wyj¹tkowy. Podobn¹ rolê spe³nia metoda-procedura o takiej samej nazwie typu TApplication. Jej wywo³anie ma postaæ zmienna-klasowa.showexception (warunek) gdzie zmienna klasowa oznacza zmienn¹ typu TApplication (zwykle jest ni¹ predefiniowana zmienna Application ), a warunek wyra enie typu Exception. DEL-2(59 z 60)

Ufff!!!!! Dzisiaj koniec...... ale ci¹g dalszy nast¹pi! DEL-2(60 z 60)