Materiały dydaktyczne Języki programowania
Transkrypt
Materiały dydaktyczne Języki programowania
Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Materiały dydaktyczne Języki programowania Semestr III Wykłady Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 1 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Temat 1 (4 godziny): Języki programowania. Delphi 2010 – omówienie środowiska Zagadnienia tematyczne: A. Delphi 2010 – interfejs systemu programowania obiektowego i zdarzeniowego; B. BDE; C. Inne języki programowania; D. Zasady tworzenia aplikacji. Zagadnienie: 1.A Delphi 2010 – interfejs systemu programowania obiektowego i zdarzeniowego Delphi jest środowiskiem programowania opartym o język programowania Pascal, wyposażonym w edytor, kompilator, debugger i kilka innych przydatnych funkcji. Interfejs użytkownika Delphi 2010 składa się z wielu części (rys. 1). Pasek szybkiego dostępu Pasek menu Okno Structure Okno Project Manager Okno Tool Palette Okno Object Inspector Czysty formularz Rys. 1. Interfejs Delphi 2010 Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 2 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Interfejs Delphi 2010 składa się z następujących części: – – – – – – – – paska menu (Menu Bar); paska szybkiego dostępu (Menu SpeedBar); palety składników (Component Paletee); kontrolera obiektów (Object Inspector); czystego formularza (Blank Form); menagera projektu (Projekt Manager); okna edycji kodu (Code Editing Window); i innych (Menu Designer, Alignment Palette). Pasek Menu Pasek ten umieszczony jest tuż poniżej niebieskiego paska zawierającego nazwę programu Delphi 2010 i daje możliwość dostępu do większości funkcji programu (rys. 1). W tabeli 1 zebrano najważniejsze elementy menu głównego programu Delphi 2010 i opisano ich funkcje. Funkcje elementów Menu Delphi 2010 Nazwa elementu File Edit Search View Project Run Component Tools Help Tabela 1 Najważniejsze funkcje Pozwala uruchomić nowy projekt, otwierać, zachowywać i zamykać pliki; dodawać i usuwać pliki do/z bieżącego projektu. Pozwala wycinać, kopiować i wklejać kod w oknie kodów, albo elementy w formularzu. Pozwala wykonywać operacje znajdowania i zastępowania kodu. Pozwala oglądać różne części interfejsu Delphi. Pozwala dodawać lub usuwać z projektu pliki i składniki. Daje również dostęp do kompilatora Delphi. Zapewnia dostęp do różnych funkcji w celu uruchamiania kodu w środowisku projektowym. Zapewnia funkcje zarządzania elementami zawartymi w projekcie i zarządzanie paletą składników. Pozwala ustawiać opcje i sterować wyglądem oraz działaniem środowiska projektowego. Daje dostęp do systemu pomocy Delphi. Pasek szybkiego dostępu Pasek ten pozwala na szybki dostęp do wielu najczęściej używanych funkcji Delphi 2010, m.in. do zachowywania pliku, uruchamiania aplikacji, dodawania nowego formularza do aplikacji czy przełączenia do okna edycji kodu programu. Delphi 2010 daje możliwość dowolnej konfiguracji paska szybkiego dostępu poprzez dodawanie lub usuwanie funkcji korzystając z edytora paska szybkiego dostępu. Paleta składników Paleta składników umożliwia szybki dostęp do wszystkich składników możliwych do wykorzystania do opracowywania interfejsu dowolnego programu. Paleta składników tworzy karty palet pogrupowanych tematycznie, z których najważniejsze przedstawiono w tabeli 2. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 3 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Najważniejsze karty składników na palecie składników Delphi 2010 Nazwa karty Standard Additional Win32 System Win 3.1 Dialogs Data Access Data Controls Internet Tabela 2 Funkcja Zawiera najczęściej używane składniki. Zawiera inne często używane składniki. Zawiera składniki zaprojektowane tak, aby były zgodne dla 32-bitowego środowiska Windows. Zawiera składniki, które dają dostęp do funkcji systemu Windows. Zawiera składniki do aplikacji pracujących w środowisku Windows 3.1, które mają podobne możliwości jak składniki Windows 95. Zawiera dostęp do pliku, drukarki, czcionek i innych pól dialogu. Zawiera składniki dołączane do baz danych. Zawiera składniki pozwalające poruszać się po bazach danych i manipulować danymi. Zawiera składniki realizujące obsługę funkcji związanych z Internetem. Kontroler obiektów Kontroler obiektów (Object Inspector) jest oknem pozwalającym kontrolować wygląd i funkcjonowanie każdego składnika w projekcie. Kontroler obiektów zawiera dwie karty, jedną właściwości (Properties) i drugą zdarzeń (Events) (rys. 2). W tabeli 3 przedstawiono wybrane właściwości i zdarzenia pustego formularza. Wybrane właściwości i zdarzenia pustego formularza Właściwość Align AutoScroll BorderIcons Canvas Caption Color Enabled Font FormStyle Height Hide PopupMenu Position Visible Width Zdarzenie OnClick Tabela 3 Opis Określa sposób wyrównania kontrolek w obrębie jej obiektu nadrzędnego. Określa, czy na obrzeżach formularza automatycznie będą wyświetlane paski przewijania. Określa, które przyciski mają być wyświetlane na pasku tytułu. Pozwala uzyskać dostęp do powierzchni rysunkowej formularza. Określa nazwę formularza. Określa kolor formularza. Określa, czy formularz jest czynny. Określa czcionkę używaną do tekstu widniejącego na formularzu. Określa styl formularza. Określa wysokość formularza. Pozwala ukryć formularz. Określa, czy menu podręczne jest skojarzone z formularzem. Określa położenie i rozmiar formularza zaraz po wyświetleniu. Określa czy formularz jest widoczny. Określa szerokość formularza. Opis Obsługuje zdarzenie w momencie kliknięcia przyciskiem myszy. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 4 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego OnClose OnCreate OnDblClik OnDestroy OnHide OnKeyDown OnKeyPress OnKeyUp OnMouseDown OnMouseMove OnMouseUp OnPaint OnResize OnShow Obsługuje zdarzenie po zamknięciu formularza. Obsługuje zdarzenie po utworzeniu formularza. Obsługuje zdarzenie w momencie dwukrotnego kliknięcia przyciskiem myszy. Obsługuje zdarzenie po usunięciu formularza. Obsługuje zdarzenie po ukryciu formularza. Obsługuje zdarzenie w momencie naciśnięcia i przytrzymania klawisza. Obsługuje zdarzenie w momencie naciśnięcia klawisza. Obsługuje zdarzenie w momencie zwolnienia klawisza. Obsługuje zdarzenie w momencie gdy przycisk myszy zostanie wciśnięty i przytrzymany. Obsługuje zdarzenie w momencie gdy wskaźnik myszy jest przemieszczany po formularzu. Obsługuje zdarzenie w momencie gdy wskaźnik myszy jest zwalniany. Obsługuje zdarzenie w momencie odświeżania obszaru rysunku formularza. Obsługuje zdarzenie w momencie zmiany rozmiaru formularza. Obsługuje zdarzenie w momencie gdy formularz znajduje się w ognisku. Rys. 2. Kontroler obiektów (karta właściwości i zdarzeń) Okno edycji kodu Okno edycji kodu wyświetlane jest poprzez naciśnięcie ikony znajdującej się w pasku szybkiego dostępu, bądź klawiszem F12 na klawiaturze. Okno edycji kodu zawiera segmenty składowe formularza projektu, wśród których znajdują się wszystkie obiekty, zmienne, procedury (rys. 3). Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 5 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Rys. 3. Okno edycji kodu pliku Unit1 Każdy moduł rozpoczyna się od nagłówka Unit zawierającego nazwę modułu. Następnie następuje sekcja Interface. Jest to część opisowa zawierająca następujące cześci: Uses - zawiera informacje z jakich bibliotek lub innych modułów korzystamy; const - zawiera deklaracje stałych; type - tutaj znajdują się deklaracje typów (np. TForm1 = class(TForm) ), umieszczamy tu też nagłówki procedur i funkcji przeznaczonych do udostępnienia (np. procedure Button1Click(Sender: TObject); ); Private i Public - sekcje te informują kompilator że deklaracje w nich zawarte mają być tylko do użytku lokalnego (private) lub globalnego (public); var - tutaj deklarujemy zmienne; implementation - w tej sekcji zgromadzone są procedury i funkcje naszego programu; end. - "end z kropką" zawsze oznacza koniec modułu lub programu. Zagadnienie: 1.B BDE. Borland Database Engine Borland Database Engine (BDE) - oprogramowanie firmy Borland dla środowiska Windows, które daje dostęp do baz danych znajdujących się na rozmaitych platformach systemowych. Uzywając borlandowski interfejs IDAPI stwarza warstwę pośredniczącą między programem klienckim, a takimi bazami, jak dBASE, Paradox, Oracle, SQL Server, DB2, Informix, InterBase i bazy zgodne z ODBC. BDE jest dostępne samodzielnie, ale jest też wbudowane w języki programowania Borlanda. Technologia BDE powstawała przez wiele lat i z czasem przyjęte w niej rozwiązania okazały się mało wygodne i mało nowoczesne obecnie. BDE łączy w sobie dwie starsze technologie bazodanowe oraz wprowadzało trzecią nową. Dokładniej chodzi tutaj o wykorzystanie ODBC oraz IDAPI stworzonych na początku lat 90-tych. Nowym rozwiązaniem w BDE były bezpośrednie sterowniki dla kilku najpopularniejszych w tamtych czasach serwerów (sterowniki te zostały nazwane SQL Link). Zarówno Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 6 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego ODBC jak IDAPI pozwalały wykorzystać plikowe bazy danych, a mechanizmy dostarczane w BDE umożliwiały wykorzystywanie ich w podobny sposób jak serwery SQL. Zagadnienie: 1.C Inne języki programowania Język programowania to ciąg symboli tworzonych według określonych zasad tworzący kod którego podstawowym zadaniem jest wykonywanie obliczeń i algorytmów oraz kontrolowanie/obsługa zewnętrznych urządzeń takich jak drukarek, robotów. Na świecie obecnie istnieją tysiące języków programowania i każdego roku powstają nowe. Wśród najpopularniejszych znajdują się: – – – – – – – – – Java - to obiektowy język programowania stworzony przez grupę roboczą pod kierunkiem Jamesa Goslinga z firmy Sun Microsystems. C - imperatywny, strukturalny język programowania stworzony na początku lat siedemdziesiątych XX w. przez Dennisa Ritchiego do programowania systemów operacyjnych i innych zadań niskiego poziomu. C++ - został zaprojektowany przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i silną statyczną kontrolę typów. Zachowanie zgodności z językiem C na poziomie kodu źródłowego pozostaje jednym z podstawowych celów projektowych kolejnych standardów języka. PHP - obiektowy, skryptowy język programowania zaprojektowany do generowania stron internetowych w czasie rzeczywistym. Visual Basic - to język programowania wysokiego poziomu i narzędzie programowania firmy Microsoft. Pyton - interpretowany, interaktywny język programowania stworzony przez Guido van Rossuma w 1990. Python posiada w pełni dynamiczny system typów i automatyczne zarządzanie pamięcią, jest zatem podobny do takich języków, jak Tcl, Perl, Scheme czy Ruby. Perl - to interpretowany język programowania autorstwa Larry'ego Walla przeznaczony głównie do pracy z danymi tekstowymi, używany także do innych zastosowań. Wzorowany na takich językach jak C, skryptowe: sed, awk i sh oraz na wielu innych. Objective-C - to rozszerzenie języka C o możliwości obiektowe, wzorowane na Smalltalku. Objective-C przyjął drogę całkowicie odmienną od C++. Jest używany głównie w frameworku Cocoa w systemie Mac OS X oraz w iPhone OS. Delphi - język programowania, którego można używać w środowiskach firmy Borland, Embarcadero, Microsoft (Delphi Prism), oraz w środowisku Lazarus. Narzędzia te są zintegrowanymi środowiskami programistycznymi typu RAD, działającymi zgodnie z zasadą dwustronnej edycji. Dawniej język Delphi był nazywany Object Pascalem. Standard języka Delphi obejmuje wiele bogatych funkcjonalnie klas, których nie ma w standardzie Object Pascala, a ponadto umożliwia programowanie wizualne, czyli Object-Oriented Design. Object Pascal jest rozszerzeniem języka Pascal – został on rozwinięty przez firmę Apple Computer przy współpracy Larry'ego Teslera, głównego architekta, i Niklausa Wirtha, wynalazcy Pascala (rys. 4). Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 7 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Rys. 4. Drzewo genealogiczne języków programowania z którego wywodzi się Delphi Odpowiednik Delphi stworzony przez firmę Borland dla Linuksa nosił nazwę Kylix. Jego produkcja została zaniechana, gdyż charakteryzował się niską jakością. Obecnie rozwijane jest na licencji GNU GPL zintegrowane środowisko programistyczne (IDE) o nazwie Lazarus wzorowane na Delphi. Lazarus jest środowiskiem wieloplatformowym, dostępnym dla różnych systemów operacyjnych. Zagadnienie: 1.D Zasady tworzenia aplikacji W celu stworzenia poprawnego programu komputerowego tzw. aplikacji należy zastanowić się nad zadaniami jakie będzie wykonywał dany program oraz jak będzie wyglądał jego interfejs, a dodatkowo napisać poprawny kod programu i dodatkowo wykonać dokumentację programu. Przeanalizowanie zadań programu pozwoli określić kto będzie użytkownikiem programu oraz metodę wprowadzania i zapisywania danych, co bezpośrednio wpływa na wygląd programu, a tym samym na korzystanie z zaawansowanych technik programowania t.j. stosowania skrótów klawiszowych, pasków szybkiego dostępu, szybkiego menu i inne. Literatura 1. 2. 3. 4. Todd Miller, David Powell. Delphi 3 Księga Eksperta Tom 1 i 2, Helion, 1998. Marco Cantu, Delphi 6, Praktyka programowania Tom 1 i 2, Mikon, 2002. Paul Kimmel, Delphi 6 dla profesjonalistów, RM, 2001. P. Thurrott, G. Brent, R. Bagdazian, S. Tendon, Delphi 3, Arkana, 1998. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 8 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Temat 2 (3 godziny): Zmienne i pętle Zagadnienia tematyczne: A. Rodzaje zmiennych, podział zmiennych; B. Pętle, pętle zagnieżdżone; C. Metody wykrywania błędów. Zagadnienie: 2.A Rodzaje zmiennych, podział zmiennych Zmienną określamy daną, która może przyjmować i przechowywać informację różnego typu przypisanego lub określonego dla zmiennej, i dlatego ważnym zadaniem jest prawidłowe przypisanie dla zmiennej jego typu. Używane w Delphi zmienne przedstawiono w tabeli 4. Typy zmiennych uzywane w Delphi ShortInt Byte Char WideChar SmallInt Word LongInt Int64 Rozmiar w bajtach 1 1 1 2 2 2 4 8 Integer Cardinal LongWord Single Double Real Real148 Extended Comp 4 4 4 4 8 8 6 10 8 Currency 8 Boolean String ShortString Variant 1 do 2 GB 16 Typ zmiennej Tabela 4 Zakres Liczby całkowite [-128, 127] Liczby całkowite [0, 255]. Znaki pojedyncze + liczby z zakresu [0, 255]. Znaki pojedyncze + liczby [0, 65535]. Liczby całkowite od [-32768, 32767]. Liczby całkowite [0, 65535]. Liczby całkowite [-2 147 483 648, 2 147 483 647]. Liczby całkowite [-9 223 372 036 854 775 808, 9 223 372 036 854 775 807]. Liczby całkowite [-2 147 483 648, 2 147 483 647]. Liczby całkowite [0, 4 294 967 295]. Liczby całkowite [0, 4 294 967 295]. Liczby rzeczywiste [1,5x10-45, 3,4x1038]. Liczby rzeczywiste [5,0x10-324, 1,7x10308]. Liczby rzeczywiste [5,0x10-324, 1,7x10308]. Liczby rzeczywiste [2,9x10-39, 1,7x1038]. Liczby rzeczywiste [3,4x10-4932, 1,1x104932]. Liczby rzeczywiste [-9 223 372 036 854 775 808, 9 233 372 036 854 775 807]. Liczby rzeczywiste [-9 223 372 036 854 775 808, 9 233 372 036 854 775 807]. True albo False Ciąg znaków Ciąg znaków - maksimum 255 Zmienny Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 9 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Zmienne w zależności od dostępności w programie dzielimy na: – – – lokalne – zmienne ograniczone tylko do pojedynczej procedury, używane wewnątrz tej procedury; zmienne w zakresie modułu – dostępne dla wszystkich procedur zawartych wewnątrz tego modułu; globalne - dostępne dla całego programu, a także funkcji i procedur umieszczonych w aplikacji, pamięć dla zmiennych globalnych przydzielana jest w momencie uruchamiania aplikacji. Zagadnienie: 2.B Pętle, pętle zagnieżdżone Działanie każdego programu opiera się na możliwości podejmowania różnych decyzji na podstawie aktualnych w danym momencie parametrów. Kryteria te mogą zależeć od danych wprowadzonych przez użytkownika lub wewnętrznego stanu aplikacji. Sterowanie programem odbywa się dzięki instrukcjom warunkowym. W przypadku gdy, chcemy wielokrotnie wykonać sekwencję pewnych instrukcji stosuje się tzw. pętle. Delphi pozwala stosować trzy różne struktury pętli: – – – For (dla); Repeat (powtórz); While (dopóki). Pętla For Pętli For używa się w programie wówczas, kiedy blok programu musi być powtórzony określoną ilość razy. Pętla For ma postać (rys. 5): zmienna := 1 zmienna := zmienna+1 instrukcja 1 zmienna <= 10 TAK NIE Rys. 5. Schemat blokowy pętli FOR Pętla For wykonywana jest w następujący sposób: najpierw zmiennej przypisywana jest wartość pierwszego (w tym wypadku – dolnego) zakresu, następnie wartość zmiennej porównywana jest z wartością drugiego (górnego) zakresu i jeśli jest ona mniejsza lub równa, wykonywana jest instrukcja Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 10 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego stojąca po słowie kluczowym do. Po wykonaniu instrukcji, zmienna indeksująca zwiększana jest o 1 i ponownie porównywana z górnym zakresem. Zapis petli FOR: FOR i:=1 to 10 do {10 jest tu wartością końcową} Begin {instrukcja} End; W przypadku wykorzystania słowa kluczowego downto odwracany jest kierunek wykonania pętli – zmienna indeksująca musi być większa lub równa niż drugi (w tym wypadku – dolny) zakres, a w każdym kroku jest ona zmniejszana o 1. Pętla Repeat Pętla tworzona z wykorzystaniem instrukcji REPEAT … UNTIL wykonywana jest co najmniej raz i kończy się wykonywać, jeśli jest spełniony występujący w niej warunek logiczny. Pętla tego rodzaju składa się ze słowa kluczowego repeat, po którym występuje sekwencja instrukcji zakończonych słowem kluczowym until i warunkiem logicznym. Ogólna postać pętli repeat przedstawiona jest poniżej, a schemat blokowy na rysunku 6: Repeat Begin {instrukcja1}; End; Until /warunek logiczny/ ; zmienna := 1 zmienna := zmienna+1 zmienna >= 10 NIE TAK Rys. 5. Schemat blokowy pętli REPEAT Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 11 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Pętla While Pętla tworzona z wykorzystaniem instrukcji while jest najprostszym typem pętli. Pozwala ona na wykonywanie pewnej instrukcji tak długo, jak długo spełniony jest określony warunek logiczny. Pętla tego rodzaju składa się ze słowa kluczowego while, po którym występuje warunek logiczny, za nim pojawia się słowo kluczowe do oraz instrukcja, która ma być wykonywana. Ogólna postać pętli while przedstawiona jest w poniższym przykładzie (rys. 7): while /warunek logiczny/ do {instrukcja1}; zmienna := 1 zmienna := zmienna+1 zmienna <= 10 TAK NIE Rys. 7. Schemat blokowy pętli WHILE Pętle zagnieżdżone Wewnątrz każdej pętli można umieścić dowolne instrukcje, również kolejną pętlę. Mogą być więc one zagnieżdżane. Najczęściej zagnieżdżane są pętle for. W podobny sposób jak pętle for można zagnieżdżać pętle while, istnieje również możliwość mieszania typów zagnieżdżonych pętli, tzn. w pętli while może być zagnieżdżona pętla for i odwrotnie, w pętli for może być zagnieżdżona pętla while. Przykład zagnieżdżonej pętli przedstawia rysunek 8. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 12 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego zmienna A zmienna B TAK A=B NIE TAK A>B A=AB NIE B=BA Rys. 8. Przykład pętli zagnieżdżonej Zagadnienie: 2.C Metody wykrywania błędów Najczęściej występującymi podczas programowania błędy to: – – błędy kompilacji (complier errors), które powodują, że program w ogóle nie będzie wykonywany; błędy wykonania (runtime errors), które spowodują zatrzymanie programu w środku jego wykonywania, albo jego nieprawidłowe wykonanie. Pojawienie się podczas kompilacji błędów najczęściej spowodowane jest nieprawidłową pisownią nazwy zmiennej lub obiektu, lub braku zdeklarowania zmiennej przed jej użyciem. Programując w Delphi w przypadku pojawienia się jakiegokolwiek błędu podczas kompilacji programu nastąpi samoczynne przerwanie programu i powiadomienie o występującym błędzie, wraz z podaną jego przyczyną. Błąd taki można natychmiast poprawić ponieważ jego wskazanie następuje w oknie Structure (rys. 9). Rys. 9. Komunikaty o błędach w oknie Structure Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 13 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Najczęściej występujące błędy zestawiono w tabeli 5. Najczęstsze błędy kompilacji Komunikat o błędzie Undeclared identifier Incompatible types \:=\ expected but \=\ found Unterminated string EDivByZero EOverflow ERangeError Tabela 5 Możliwa przyczyna Nieprawidłowo wpisana nazwa zmiennej, obiektu lub procedury. Nie zdeklarowana zmienna. Brak nazwy modułu, zawierającego procedurę w klauzuli uses. Przypisanie lub porównanie zmiennych dwóch różnych typów. Wykonywanie operacji niedozwolonych dla danego typu zmiennych. Nieprawidłowo wpisany symbol = w instrukcji przypisanie. Poprawny operator przypisania to /:=/. Pominięcie jednego ze znaków apostrofa, który potrzebny jest przy strumieniu tekstu. Program próbował wykonać dzielenie przez zero. Podczas operacji zmiennopozycyjnej wystąpiło przepełnienie, oznacza to że wyliczona liczba nie mieści się w zakresie liczb, jakie kod potrafi obsłużyć. Liczba całkowita jest spoza dopuszczalnego zakresu wartości. Bardzo pomocnym narzędziem Delphi w wyszukiwaniu błędów jest Integrated Debugger. Pozwala on na wyszukiwaniu błędów w określonym obszarze kodu programu, do określonego punktu w programie, a dodatkowo śledzić i oceniać wartości zmiennych i wyrażeń oraz poprawnego wykonywania instrukcji podczas działania aplikacji. Literatura 1. 2. 3. 4. Todd Miller, David Powell. Delphi 3 Księga Eksperta Tom 1 i 2, Helion, 1998. Marco Cantu, Delphi 6, Praktyka programowania Tom 1 i 2, Mikon, 2002. Paul Kimmel, Delphi 6 dla profesjonalistów, RM, 2001. Andrzej Marciniak, Turbo Pascal 7.0 – Część I, Wydawnictwo Nakom, 1996. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 14 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Temat 3 (3 godziny): Tworzenie aplikacji w Delphi Zagadnienia tematyczne: A. Zasady tworzenia interfejsu, programu; B. Komponenty, tworzenie komponentów, wykorzystanie komponentów. Zagadnienie: 3.A Zasady tworzenia interfejsu, programu Do stworzenia dowolnej aplikacji w Delphi zalecane jest stosowanie pięciu następujących etapów: – planowanie programu – – czyli zdecydować w jakim celu dana aplikacja powstaje i kim będą jej użytkownicy, w jaki sposób do programu będą trafiać informacje i jaką postać będą miały dane wyjściowe z programu; – projektowanie interfejsu – – wiedza o tym, kim będą użytkownicy programu pomaga określić wygląd interfejsu, oraz sposób wprowadzania i wyprowadzania danych. Projektowanie interfejsu wiąże się również z wykorzystaniem komponentów, które bezpośrednio wpływają na wygląd programu oraz umożliwiają użytkownikowi wprowadzenia teksu, dokonywanie wyborów, oglądanie i redagowanie grafiki czy inicjowanie czynności programu; – definiowanie właściwości i zdarzeń składników programu – – umieszczone komponenty na formularzu wymagają określenia dla nich właściwości i zdarzeń. Właściwości każdego komponentu wykonuje się w kontrolerze obiektów (Object Inspector), zaś obsługa zdarzeń każdego komponentu wymaga uzupełnienie kodu programu w oknie edycji kodu. Poprawne działanie kodu programu wymaga dodatkowo zdefiniowanie zmiennych, które najlepiej wykonać na tym etapie tworzenia każdej aplikacji. – testowanie programu – – w momencie gdy utworzyliśmy wszystkie elementy programu i przypisaliśmy wszystkim komponentów ich właściwości i obsługujące ich zdarzenia, możemy przetestować nasz program wybierając z paska szybkiego dostępu Run, lub naciskając klawisz funkcyjny F9. Wybranie tego polecenia spowoduje kompilację naszego programu oraz sprawdzenie poprawności jego składni, czyli wyszukanie błędów w kodzie. Błędy te mogą być najczęściej błędami składni poleceń lub błędami niezdeklarowanych zmiennych. W przypadku znalezienia błędu Delphi zatrzyma proces kompilacji i wskaże je w oknie Structure (rys. 9). Proces testowanie programu należy przeprowadzać tak długo, aż zostaną poprawione wszystkie błędy, a nasza aplikacja będzie działać poprawnie zgodnie z naszymi oczekiwaniami; – tworzenie pliku wykonawczego – – w momencie kod programu nie zawiera błędów, a aplikacja działa poprawnie możemy wykonać plik wykonawczy (Executable File). Tworzenie takiego pliku odbywa się poprzez wybranie z paska menu Project a następnie Compile, lub naciśnięcie kombinacji klawiszy Ctrl+F9, co spowoduje utworzenie przez kompilator pliku wykonawczego z rozszerzeniem *.exe. Zagadnienie: 3.B Komponenty, tworzenie komponentów, wykorzystanie komponentów Komponenty, są to elementy Delphi, z których budowane są aplikacje dla Windows. Komponenty możemy podzielić na widoczne (np. przycisk klasy TButton, etykiety klasy Tlabel) lub niewidoczne Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 15 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego (TOpenDialog, TTimer). Komponenty widoczne to komponenty interfejsu widoczne na formularzu podczas fazy projektowania jak również w fazie wykonywania programu. Komponenty niewidoczne to elementy systemowe, które są widoczne tylko w fazie projektowania aplikacji, umożliwiają one dostęp do zdarzeń systemowych bądź dialogowych systemu Windows. Przeniesienie komponentu z palety na formularz następuje po kliknięciu składnika palety lewym przyciskiem myszy, a następnie kliknięciu w odpowiednim miejscu na formularzu lub dwukrotnym kliknięciu komponentu na palecie. Każdy umieszczony na formularzu komponent jest dopisywany do definicji klasy TForm1 pod nazwą standardową, która jest widoczna obok właściwości Name w okienku Inspektora obiektów. Nazwę tę można zmienić na inną i powinno się to zrobić zaraz po wstawieniu komponentu. Standardowe właściwości i zdarzenia komponentów zostały zamieszczone w tabeli 3. Delphi daje możliwość tworzenia nowych komponentów i instalacji istniejących już komponentów. Do stworzenia nowego komponentu jak również instalacji nowych komponentów służy polecenie New Component. Tworzeniem nowego komponentu rozpoczynamy poprzez wybranie polecenia New Component z menu Component. Na ekranie zobaczymy wówczas okienko (rys. 10A), z listy rozwijalnej należy wybrać komponent, który będzie stanowił klasę bazową dla naszego nowego obiektu, dla którego następnie możemy wpisać dowolną nazwę (Class Name), określić w jakiej palecie zostanie zainstalowany (Palette Page) oraz wskazać gdzie zostaną zapisane nowe pliki związane z komponentem (Unit name) (rys. 10B). Rys. 10. Zasady tworzenia nowego komponentu Po naciśnięciu przycisku Next pojawi się nam końcowe okno które pozwoli zakończyć proces tworzenia się komponentu bądź instalacji utworzonych już wcześniej komponentów. Literatura 1. 2. 3. 4. Todd Miller, David Powell. Delphi 3 Księga Eksperta Tom 1 i 2, Helion, 1998. Marco Cantu, Delphi 6, Praktyka programowania Tom 1 i 2, Mikon, 2002. Paul Kimmel, Delphi 6 dla profesjonalistów, RM, 2001. P. Thurrott, G. Brent, R. Bagdazian, S. Tendon, Delphi 3, Arkana, 1998. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 16 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Temat 4 (3 godziny): Programowanie grafiki i multimediów Zagadnienia tematyczne: A. Tworzenie aplikacji multimedialnych, wykorzystanie „płótna”, rysowanie wykresów, schematów, obsługa plików graficznych; B. Operacje na plikach. Zagadnienie: 4.A Tworzenie aplikacji multimedialnych, wykorzystanie „płótna”, rysowanie wykresów, schematów, obsługa plików graficznych Delphi daje dwa sposoby obsługi grafiki: – składniki graficzne (graphics components): wykorzystywane w aplikacji w czasie projektowania, ale można je zmieniać przez kod programu, tak jak wszystkie inne składniki; – metody graficzne (graphics methods): czyli, wiersze kodu, które działają tylko w czasie działania programu. Stosując metody graficzne używa się graficznego systemu współrzędnych (graphics coordinate system), który jest parą liczb. Pierwsza liczba z tej pary określa odległość punktu od lewej krawędzi składnika, w którym punkt jest umieszczony, zaś druga liczba odległość między punktem, a górną krawędzią składnika. Delphi obsługuje dwa rodzaje typów grafiki: – obrazki (pictures): obrazy, które przechowywane są w postaci plików na dysku. Wyświetlenie dowolnego obrazka (o rozszerzeniu *.gif, *.png, *.jpg, *.jpeg, *.bmp, *.tif, *.tiff, *.wmf, *.ico, *.emf) możliwe jest poprzez zastosowanie komponentu Image i skorzystanie z właściwości Picture z okna Object Inspector. W przypadku gdy załadowany obraz nie mieści się w ramach kontrolki TImage, to zostaje obcięty na jej granicach lub dopasowany automatycznie do jej rozmiarów, może być również powiększany lub zmniejszany w stosunku do oryginalnych rozmiarów. – rysunki (drawings): grafika tworzona rzeczywiście przez stworzony program za pomocą metod obiektu Canvas (płótno). Wybrane metody obiektu TCanvas przedstawiono w tabeli 6. Wybrane metody obiektu TCanvas Metoda Kolor:=Canvas.pixels[x, y] Canvas.pixels[x, y]:=clRed MoveTo[x, y] LineTo[x, y] Rectangle[x1, y1, x2, y2] Ellipse[x1, y1, x2, y2] Polyline([Point(x1, y1), Tabela 6 Znaczenie Za pomocą funkcji Pixels można odczytać kolor piksela w miejscu o współrzędnych (x, y). Ta sama funkcja wywołana w ten sposób powoduje wyświetlenie na formularzu czerwonego punktu w współrzędnych (x, y). Przenosi kursor graficzny do punktu o współrzędnych (x, y). Rysuje linię od bieżącej pozycji kursora graficznego do punktu o współrzędnych (x, y). Procedura rysuje prostokąt. Procedura rysuje elipsę – parametrami są współrzędne dwóch przeciwległych wierzchołków prostokąta, w który elipsa jest wpisana. Procedura rysuje linię łamaną lub wielokąt. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 17 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Point(x2, y2), Point(x3, y3)]) Polygon([Point(x1, y1), Point(x2, y2), Point(x3, y3)]) Refresh Arc(x1, y1,x2, y2,x3, y3, x4, y4) Pie(x1, y1,x2, y2,x3, y3, x4, y4) RoundRect(x1,y1,x2,y2,x3,y3) TextOut(x, y) Procedura umożliwia narysowanie wielokąta wypełnionego bieżącym kolorem i stylem pędzla. Procedura odświeżą formularz – kasuje wszystkie obiekty rysowane za pomocą metod obiektu Canvas i nieumieszczanie w procedurze obsługi zdarzenia OnPaint. Procedura rysuje krzywą eliptyczną w prostokącie o współrzędnych (x1, y1; x2, y2) od punktu (x3, y3), do punktu (x4, y4). Procedura rysuje wycinek koła. Procedura rysuje prostokąt z zaokrąglonymi narożnikami. Procedura wyświetla napis. Zagadnienie: 4.B Operacje na plikach Podstawowymi operacjami na plikach są: kopiowanie, usuwanie, przenoszenie, zmiana nazwy oraz tworzenie ich. Procedury i funkcje służące do operowania na plikach przedstawiono w tabeli 7. Wybrane procedury i funkcje służące do operowania na plikach Nazwa Append AssignFile BlockRead BlockWrite ChDir CloseFile CreateDir DeleteFile DirectoryExists Eof Eoln Erase FileClose FileCreate FileOpen FileExists FileMode FilePos FileRead FileSearch FileSeek FileSetAttr FileSetDate FileSetReadOnly FileWrite FindClose Tabela 7 Opis Otwiera plik i ustawia się na samym końcu. Kojarzy zmienną plikową z danym plikiem. Odczytuje dane z plików typowanych lub binarnych. Zapisuje dane do plików typowanych lub binarnych. Ustawia aktualny katalog. Zamyka uprzednio otwarty plik. Tworzy katalog określony w parametrze. Usuwa określony plik. Sprawdza czy dany katalog istnieje. Zwraca True jeżeli otwarty plik został odczytany do końca. Zwraca True jeżeli pozycja tekstu wskazuje na koniec linii. Usuwa plik. Zamyka uprzednio otwarty plik. Na podstawie ścieżki tworzy nowy plik. Otwiera plik na podstawie podanej ścieżki. Sprawdza czy dany plik istnieje. Określa sposób otwarcia pliku. Pobiera aktualną pozycję w pliku. Odczytuje dane z otwartego pliku. Wyszukuje pliku w określonym katalogu. Umożliwia przemieszczanie się po otwartym pliku. Ustawia atrybuty pliku. Ustawia datę ostatniej modyfikacji pliku. Ustawia plik jedynie do odczytu. Zapisuje dane do pliku. "Zamyka wyszukiwanie" uprzednio otwarte procedurą. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 18 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego FindFirst FindNext ForceDirectories MkDir Read Readln RemoveDir Rename RenameFile Reset ReWrite RmDir Seek SeekEof SeekEoln SetCurrentDir Truncate Write Writeln Wyszukuje pliki pasujące do danej maski. Jeśli plik został znaleziony, procedura nakazuje szukać dalej. Tworzy nowe katalogi. Tworzy nowy katalog. Odczytuje zawartość pliku tekstowego lub binarnego. Odczytuje kolejną linię z pliku tekstowego. Usuwa katalog. Zmienia nazwę pliku. Zmienia nazwę pliku lub katalogu. Otwiera plik celem odczytania zawartości. Otwiera plik do zapisu. Usuwa katalog. Przesuwa na daną pozycję pliku amorficznego lub typowanego. Sprawdza czy kursor wskazuje na koniec pliku. Sprawdza czy kursor wskazuje na koniec linii. Ustawia aktualny katalog. Usuwa zawartość pliku znajdującą się za "kursorem". Zapisuje dane binarne lub tekstowe do pliku. Zapisuje nową linię do pliku tekstowego. Przykłady składni najczęściej stosowanych poleceń operacji na plikach. Kopiowanie pliku Bardzo prosta funkcja kopiowania ma postać: CopyFile(IpExistingFileName:PansiChar; IpNewFileName:PansiChar; bFailIfExists:LongBool); IpExistingFileName - scieżka pliku, który chcemy skopiować IpNewFileName - ścieżka, gdzie chcemy skopiować plik BFailIfExists - jeżeli posiada wartość true to nie nadpisuje pliku jeżeli ten istnieje Przykład: Chcę skopiować plik 'C:\a.txt' do folderu 'D:\Pliki' CopyFile('C:\a.txt','D:\Pliki\a.txt',true); Usuwanie pliku Funkcja usuń ma postać: DeleteFile(const FileName:string); const FileName - ścieżka pliku, który chcemy skasować Przykład: Chcę skasować plik 'C:\a.txt' DeleteFile('C:\a.txt'); Przenoszenie pliku Plik można przenieść funkcją: MoveFile(IpExistingFileName:PansiChar;IpNewFileName:PansiChar); IpExistingFileName - scieżka pliku, który chcemy przenieść, Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 19 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego IpNewFileName - ścieżka, gdzie chcemy przenieść plik Przykład: Chcę przenieść plik 'C:\a.txt' do folderu 'D:\Pliki' MoveFile('C:\a.txt', 'D:\Pliki\a.txt'); Zmiana nazwy pliku Zmianę nazwy pliku można wykonać funkcją CopyFile (skopiować plik do tej samej lokacji pod inną nazwą, a następnie usunąć starą wersję funkcją DeleteFile), albo przenieść go do tej samej lokalizacji za pomocą funkcji MoveFile, ale istnieje specjalna funkcja stworzona do zmiany nazwy pliku: RenameFile(const OldName:string; const NewName:string); const OldName - ścieżka ze starą nazwą pliku const NewName - ścieżka z nową nazwą pliku Przykład: Chcę zmienić nazwę pliku 'C:\a.txt' na 'b.txt' RenameFile('C:\a.txt','C:\b.txt'); Tworzenie pliku Do tworzenia nowych plików służy funkcja: CreateFile(IpFileName: PansiChar; dwDesiredAccess: Cardinal; dwShareMode: Cardinal; IpSecurityAttributes: PsecurityAttributes; dwCreationDisposites: Cardinal; dwFlagsAndAttributes: Cardinal; hTemplateFile: Cardinal) IpFileName:PansiChar - ścieżka nowego pliku i jego typ DwFlagsAndAttributes - atrybuty: 0 - archiwalny, 1- tylko do odczytu, archiwalny, 2 - ukryty, archiwalny, 3- tylko do odczytu, archiwalny, ukryty, 4 - archiwalny, blokada ukryty, 5 - tylko do odczytu, archiwalny, blokada ukryty Przykład: Chcę stworzyć plik 'C:\a.txt' z atrybutami archiwalny, blokada ukryty CreateFile('c:\a.txt',0,0,nil,1,4,0); Literatura 1. 2. 3. 4. Todd Miller, David Powell. Delphi 3 Księga Eksperta Tom 1 i 2, Helion, 1998. Marco Cantu, Delphi 6, Praktyka programowania Tom 1 i 2, Mikon, 2002. Paul Kimmel, Delphi 6 dla profesjonalistów, RM, 2001. P. Thurrott, G. Brent, R. Bagdazian, S. Tendon, Delphi 3, Arkana, 1998. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 20 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Temat 5 (2 godziny): Bazy danych w Delphi Zagadnienia tematyczne: A. Tworzenie baz danych w Delphi; B. Tworzenie interfejsu bazy danych, kwerendy, raporty, eksport – import danych. Zagadnienie: 5.A i 5.B Tworzenie baz danych w Delphi. Tworzenie interfejsu bazy danych, kwerendy, raporty, eksport – import danych. Mechanizmem odpowiedzialnym za poprawne działanie baz danych w Delphi jest Borland Database Engine oraz takie narzędzia jak: Database Desktop, Data Access Components, Data Components oraz Database Form Wizard, przedstawione w tabeli 8. Wybrane narzędzia i elementy bazy danych Tabela 8 Opis Grupa tabel z danymi, zawierająca powiązane ze sobą informacje. Grupa rekordów danych, z których każdy zawiera ten sam typ danych. Pojedyncza pozycja danych w tabeli, składająca się z szeregu pól danych. Określony element danych zawartych w rekordzie. Polecenie, zwykle używające strukturowego języka kwerend przeznaczonego do odbierania określonej grupy rekordów z jednej lub wielu tabel albo do wykonania operacji na tabeli. Index Szczególny typ tabeli, która zawiera wartości pół kluczy i wskaźników do pozycji rzeczywistego rekordu. Session Komponent używany do połączenia między bazami danych. DataSource Komponent ten łączy zbiór danych (TTable lub TQuery) z wizualnymi komponentami. DBEdit Komponent pozwalający na modyfikację pojedynczego pola. DBGrid Komponent ten pozwala na modyfikację oraz przeglądanie tabeli w formie siatki. DBNavigator Komponent służący do poruszania się po tabeli, przechodzenia w stan edycji, dopisywania nowego rekordu itp. DBImage Komponent ten służy do wyświetlania obiektu binarnego, przechowywanego w formie obrazu. DBText Komponent umożliwiający wyświetlanie danych pochodzących z określonego pola bez możliwości ich modyfikacji. Data Module Obiekt służący do przechowywania niewidocznych komponentów aplikacji oraz do ustawiania ich właściwości, tworzenia i przypisywania metod obsługi zdarzeń. Element Database Table Record Field Query Typy pól tabeli w Delphi mogą być zapisywane w postaci ciąg znaków, liczb całkowitych, wartości logicznych, wyrażeń określających datę itp. Typy danych w Delphi zamieszczono w tabeli 9. Wybrane typy danych pól tabeli Integer Short Integer Tabela 9 Typy numeryczne Liczba całkowita 32-bitowa. Liczba całkowita 16-bitowa. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 21 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Byte Float Money Autoincrement Boolean Character Alpha Memo Text Date Time Date & Time Timestamp Binary Image Bitmap OLE Liczba całkowita z zakresu od 0 do 255. Liczba rzeczywista. Liczba ze stałą liczbą miejsc dziesiętnych Unikatowa liczba automatycznie zwiększana o 1 Wartość logiczna: True lub False; Yes lub No; 1 lub 0 Typy znakowe Dowolne znaki ASCII Dowolne znaki ASCII Dowolne znaki ASCII Dowolne znaki ASCII Typy czasu i daty Format: dzień, miesiąc, rok. Format: godzina, minuta, sekunda. Format: data i czas. Format: data i czas. Inne typy pól Format: dane binarne. Format: grafika. Format: grafika w formacie BMP. Format: grafika, muzyka, dokumenty itp. Database Desktop jest narzędziem dołączonym do Delphi, które pozwala na bardzo wygodne zarządzanie oraz tworzenie struktur tabel relacyjnych baz danych. Database Desktop umożliwia tworzenie tabel w oparciu o sterowniki dostarczone wraz z pakietem Delphi. Pozwala również na budowę zapytań SQL, które można później zastosować w aplikacji. Narzędzie to umożliwia tworzenie tabel standardowych typów baz danych. Wybrane typy tabel baz danych zostały przedstawione w tabeli 10. Wybrane typy tabel baz danych Źródło danych Paradox dBASE ASCII Local InterBase Server Access Tabela 10 Opis Tabele utworzone i używane przez system baz danych Paradox Borlanda. Tabele te są również domyślnymi tabelami jakie tworzy Database Desktop. Tabele utworzone przez system bazy danych dBASE Borlanda. Pliki tekstowe zawierające informacje ułożone w postaci kolumn. Bazy danych tworzone i używane przez InterBase Server Borlanda. Bazdy danych tworzone w MS Access Microsoft. Właściwości tabel typu Paradox. Tabele bazy Paradox są bardziej uniwersalne od innych typów baz danych i posiadają wiele interesujących właściwości, niedostępnych w innych typach tabel. Tworząc tabele typu Paradox w wersji 7, możemy określić m.in.: – – – kontrolę poprawności wprowadzanych danych (Validity Checks); maskę wprowadzanych danych; indeksy dodatkowe do tabel typu Paradox (Secondary Indexes); Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 22 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego – – – integralność referencyjną; zabezpieczanie tabeli hasłem (Password Security); język tabeli (Table Language). Wyszukiwanie i filtrowanie danych W celu znalezienia rekordów w zbiorze danych w Delphi stosuje się trzy sposoby wyszukiwania: – – – metoda Locate, która służy do przeszukiwania zbioru danych w celu znalezienia rekordu, wówczas znaleziony rekord staje się rekordem bieżącym; metoda Lookup zwraca wartość wskazanych pól rekordu, które pasują do określonych kryteriów wyszukiwania; metody FindKey oraz FindNearest: pierwsza polega na przeszukiwanie zbioru danych w celu znalezienia rekordu zawierającego w polach wskazane wartości; metoda FindNearest natomiast w przypadku nieznalezienia szukanego wzorca w tabeli, przemieszcza kursor do rekordu, którego wartości są najbardziej zbliżone do wartości przekazanych w parametrze wywołania metody. Delphi umożliwia również wprowadzanie filtrowania danych. W tym celu komponent TTable wyposażony został w dwie właściwości i jedno zdarzenie. Właściwość pierwsza to Filter, która określa warunek, według którego filtrowany będzie zbiór danych. Druga właściwość: Filtered aktywuje Filter. Do zdefiniowania warunku filtru dla zbioru danych można zastosować zdarzenie OnFilterRecord, które wywoływane jest za każdym razem, kiedy inny rekord staje się bieżącym rekordem i gdy jednocześnie aktywne jest filtrowanie. Innym sposobem ograniczania zbioru dostępnych rekordów jest zastosowanie zakresów. Zakres jest zbiorem sąsiadujących ze sobą indeksowanych rekordów, ograniczonym pewnymi wartościami zakresu. Język SQL (Structured Query Language- język zapytań strukturalnych) został zaprojektowany przez firmę IBM w celu sprawnej realizacji kwerend w relacyjnych bazach danych. Kwerenda jest zleceniem dla programu bazy danych, mającym na celu odszukanie rekordów spełniających określone kryteria. Do wykonania kwerendy w Delphi służy komponent TQuery. Jej podstawowe właściwości to: SQL – zawiera tekst komendy języka SQL, która zostanie wykonana; DatabaseName – określa nazwę bazy danych, z którą został skojarzony zbiór danych; Params – zawiera parametry przekazywane do komendy SQL; Active – określa czy zbiór danych jest otwarty, czy nie. Bazy danych Delphi prócz DataBase Desktop bazują na dwóch głównych grupach składników: – – Data Access (dostęp do danych) – zapewniających połączenie między tworzonym programem a bazami danych (rys. 10 a); Data Controls (dane) – służące do przedstawienia danych znajdujących się w bazie danych (rys. 10 b). Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 23 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego a) b) Rys. 10. Składniki: a) Data Access, b) Data Controls Przekazywanie danych z bazy danych na drukarkę odbywa się poprzez generowanie raportów. Uniwersalnym i w pełni kompatybilnym narzędziem stosowanym w Delphi jest QuickReport komponenty znajdujące się w zakładce QReport (rys. 11). Rys. 11. Wybrane składniki karty QReport Literatura 1. 2. 3. 4. Todd Miller, David Powell. Delphi 3 Księga Eksperta Tom 1 i 2, Helion, 1998. Marco Cantu, Delphi 6, Praktyka programowania Tom 1 i 2, Mikon, 2002. Paul Kimmel, Delphi 6 dla profesjonalistów, RM, 2001. Arkadiusz Jakubowski, Delphi 4 – Tworzenie systemów baz danych, Helion, 1999. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 24 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Temat 6 (1 godzina): Delphi i AutoCAD. Zagadnienia tematyczne: A. Automatyzacja czynności związanych z wykonywaniem rysunków w programie AutoCAD; B. Obiekty klient, serwer C. Interfejs OLE; D. Nawiązanie połączenia przez interfejs OLE; Zagadnienie: 6.A Automatyzacja czynności związanych z wykonywaniem rysunków w programie AutoCAD Przez pojęcie automatyzacji definiować można możliwość programowego sterowania obiektami innego programu oraz możliwość dostępu do bibliotek DLL i procedur znajdujących się w innych programach. Dzięki automatyzacji zadań graficznych w AutoCadzie za pomocą Delphi, można sterować i wywoływać polecenia – procedury, za pomocą innych aplikacji stworzonych na cele automatyzacji zadań, bez potrzeby uruchamiania samego AutoCAD-a. Poprawnie napisana aplikacja, (nie tylko w Delphi), potrafi „porozumiewać się” z Autocad-em, wysyłać do niego zmienne, zwracać wyniki, bez potrzeby uruchomiania i otwierania określonego rysunku. Zagadnienie: 6.B Obiekty klient, serwer Aplikację sterowaną nazywamy serwerem, a aplikację sterującą nazywamy klientem. Serwer – aplikacja którą sterujemy w procesie automatyzacji, gdyż to ona udostępnia obiekty automatyzacji OLE, na których przeprowadzane będą różnego rodzaju działania graficzne i obliczeniowe. (AutoCAD). Klient – aplikacja która wykorzystuje obiekty aplikacji sterowanej, w tym przypadku obiekty serwera. Aplikacja typu klient może być stworzona w dowolnym programie (Word, Excel, Access itp.), lub języku programowania (Delphi, VB, C++) udostępniającym obiekty automatyzacji OLE. Program taki można napisać i skompilować bez konieczności posiadania serwera, czyli programu AutoCAD. Program taki, jeśli zostanie uruchomiony na komputerze, na którym jest zainstalowany AutoCAD, wykona zaprogramowane działanie. Zagadnienie: 6.C Interfejs OLE Dostęp do obiektów OLE umożliwiają interfejsy nazywane interfejsami automatyzacji OLE, a w przypadku AutoCAD-a interfejs ten nazywany Interfejsem automatyzacji OLE AutoCAD-a - umożliwia on dostęp do następujących obiektów: – – – – – Obiekty rysunkowe; Elementy informacyjne; Dokumenty i dokumentacja; Konfiguracje programu i konfiguracje użytkowników; I inne. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 25 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego W praktyce oznacz to że w/w obiektami, procedurami możemy sterować lub wywoływać je nie koniecznie z poziomu AutoCADa-a, ale również przy zastosowaniu właśnie uniwersalnych środowisk programistycznych. (Delphi, Borland Builder itp.). Dodatkowo można tworzyć nakładki dowolnej postaci z dowolnymi funkcjami, które z poziomu samego AutoCAD-a, mogą wydawać się bardziej skomplikowane w obsłudze. Przykładem może tu być aplikacja pozwalająca np. na rysowanie dowolnych okręgów w przestrzeni rysunku AutoCAD-a, która pozwala na rysowanie okręgów poprzez nowo utworzone okno dialogowe, bez potrzeby definiowania każdego okręgu w linii poleceń AutoCAD-a (rys. 12). Rys. 12. Widok nakładki „Rozmieść otwory” automatyzującej rysowanie otworów w przestrzeni rysunku programu AutoCAD. Automatyzacja zadań za pomocą tych środowisk pozwala na wykorzystanie bogatych bibliotek i narzędzi programistycznych, które w nich istnieją, a sam AutoCAD ich nie posiada. Chodzi tu przede wszystkim o współprace z relacyjnymi bazami danych, tworzenie bibliotek komponentów i procedur, a także dodawanie do AutoCAD-a nowych menu jak i również tworzenie własnych nakładek. Wykorzystanie bibliotek i komponentów Delphi pozwala również na stworzenia własnych unikalnych bibliotek elementów, menu podręcznych itp. Na potrzeby danego projektu lub zakładu. Struktura obiektów interfejsu automatyzacji OLE jest dość rozbudowana, obiekty poszczególne są pogrupowane w zbiorach, a dostęp do nich uzyskuje się przez główny obiekt interfejsu automatyzacji OLE programu AutoCAD. Główny obiekt interfejsu to: AutoCAD.Application wraz z przynależnymi do niego obiektami. Strukturę tego obiektu przedstawia rysunek 13. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 26 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Application (AutoCAD.Application) Preferences Documents Document MenuBar PopupMenu MenuGroups MenuGroup Rys. 13. Struktura głównego obiektu interfejsu automatyzacji programu AutoCAD. Obiekt Document – najczęściej wykorzystywany obiekt przy pracach nad rysunkiem, analogicznie do programu AutoCAD oznacza to aktywne okno z rysunkiem, wraz z przynależnymi do niego obiektami generującymi składniki rysunku oraz ustawienia aktualnego rysunku, właściwościami, warstwami itd. Struktura obiektu Document została przedstawiona na rysunku poniżej. Obiekt Document zawiera: – – – – – – Zbiór Blocks – stanowiący zbiór wszystkich bloków występujących w obiekcie Document wraz z innymi blokami specjalnymi (ModelSpace, PaperSpace). Wszystkie składniki dodawane do tego zbioru za pomocą metody Add, a dostęp do wszystkich składników zbioru realizowany jest za pomocą metod Item; Obiekt Block – jest to składnik zbioru Blocks i może występować w postaci Blok, warstwa lub odnośnik; Obiekt Modelspace – przestrzeń modelu, dla każdego rysunku istnieje tylko jedna przestrzeń modelu. Jest to zbiór wszystkich obiektów w przestrzeni modelu. Nowe obiekty dodaje się do tego zbioru za pomocą metod Addtypmetody; Obiekt Paperspace – aktywna przestrzeń papieru. Jeśli akurat aktywna jest przestrzeń modelu, to blok ten odpowiada ostatniemu widokowi przestrzeni papieru; Elementy rysunkowe takie jak: linia, polilinia, punkt, okrąg, itd.; Pozostałe składniki takie jak wymiarowanie, grupowanie, warstwy, tekst itd. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 27 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Document Blocks Block Database ModelSpace Paperspace Elementy rysunkowe obiektu Document Pozostałe składniki obiektu Document Rys. 14. Struktura obiektu Document. Obiekt PopupMenu – grupa obiektów związanych z obsługą menu i ikon programu AutoCAD. Do grupy tej możemy się odwoływać wywoływać programowo funkcje poszczególnych menu, jak również tworzyć własny ikony paski menu, czy menu podręczne. Elementy rysunkowe przynależne do obiektu Document to: – – – – – – – – – – – – – – – – – – – – – – – – – – – 3DFace; 3DPoly; 3DSolid; Arc; Attribute; AttributeRef; BlockRef; Circle; Dim3PointAngular; DimAlinged; DimAngular; DimDiametric; DimOrdinate; DimRadial; DimRotated; Ellipse; ExternalReference; Hatch; Leader; Line; Mline; Mtext; Point; PolifaceMesh; Raster; Ray; Region; Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 28 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego – – – – – – Shape; Solid; Spline; Text; Trace; i inne. Zagadnienie: 6.D Nawiązanie połączenia przez interfejs OLE Korzystanie z metod i obiektów serwera, czyli programu AutoCAD możliwe jest tylko, gdy nawiązane jest połączenie z serwerem OLE programu AutoCAD. Pomimo tego, sam program (nakładka – klient), może być napisany i skompilowany bez konieczności posiadania serwera – w tym przypadku AutoCAD-a. Posiadanie serwera wymagane jest tylko przy uruchamianiu danego programu klienta. Połączenie można uzyskać z poziomu systemu Delphi na dwa sposoby: 1. Tworzenie nowego obiektu, który udostępnia obiekty programu AutoCAD. Można to zrealizować przy pomocy funkcji CreateOleObject. 2. Uzyskanie dostępu do aktualnie otwartego rysunku w programie AutoCAD – funkcja GetOleObject. Kolejne etapy nawiązania połączenia z AutoCAD: 1. Deklaracja użycia modułu obsługującego obiekty OLE w części modułu zawierającej listę modułów; … uses ComObj; … 2. Deklaracja zmiennych opisujących obiekty programu AutoCAD: AutoCAD.Application – główny obiekt interfejsu OLE; Autocad.Application.Document – dokument otwarty przez interfejs OLE; Autocad.Application.Document.ModelSpace – przestrzeń modelu aktualnie otwartego modelu; … var AcadApp, AcadDoc, AcadDwg : OleVariant; {deklaracja zmiennych w programie} … 3. Sprawdzenie czy AutoCAD został uruchomiony i w zależności od wyniku wybrać jedną z wyżej wymienionych metod służącą do nawiązania połączenia OLE. Nawiązanie połączenia z programem AutoCAD w przypadku, gdy program został już otwarty, może przyjąć następującą postać: … AcadApp:=GetActiveOLEObject(‘AutoCAD.Application.15’); … Nawiązanie połączenia z programem AutoCAD w przypadku gdy program nie został jeszcze otwarty, może przyjąć następującą postać: … Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 29 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego AcadApp:=CreateOLEObject(‘AutoCAD.Application.15’); AcadApp.Visible := true; … 4. Sprawdzenie czy w AutoCadzie otworzono jakiś dokument i przypisanie go zmiennej – zmiennej zadeklarowanej w punkcie 2. … if AcadApp.Document.Count > 0 then begin AcadDwg:=AcadDoc.Modelspace; … end else begin … end; … 5. Translacja współrzędnych. 6. Generowanie rysunków Literatura 1. Wojciech Czyżewski, Edward Lisowski. AutoCAD. Automatyzacja zadań grafiki za pomocą Delphi, Helion, 2002. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 30 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Temat 7 i 8 (2 godziny): Automatyzacja zadań grafiki AutoCAD za pomocą Delphi. Tworzenie aplikacji i działania na rysunkach. Zagadnienia tematyczne: A. Translacja współrzędnych; B. Automatyzacja generowania podstawowych elementów rysunkowych; C. Metody generowania obiektów 3D Zagadnienie: 7.A Translacja współrzędnych W trakcie kompilowania programu służącego do automatyzacji zadań AutoCAD-a przy pomocy Delphi, powstaje problem z prawidłowym określeniem współrzędnych. Kompilator Delphi nie dopuszcza stosowania trójelementowej tablicy w automatyzacji OLE. AutoCAD natomiast, do określenia punktu w przestrzeni modelu korzysta z trzech współrzędnych (x,y,z). Przekształcenie zmiennych z interfejsu Delphi skompilowanie ich i przesłanie do AutoCAD-a, możliwe jest przy pomocy funkcji VarArrayCreate, która przekształca zmienną typu OLEVariant w tablicę liczb Double. Przykład translacji współrzędnych, na przykładzie funkcji, do której program się odwołuje, przedstawia poniższa funkcja: function trans(x,y:Double):OleVariant; begin Result:=varArrayCreate([0,2], varDouble); Result[0]:=x; Result[1]:=y; Result[2]:=z; end; {trans – dwolona nazwa funkcji} {zwracana wartość funkci} Przekształcenie zmiennych w wyżej podany sposób sprawdza się tylko w przypadku generowania elementów o określonej liczbie punktów. Przy generowaniu elementów o nieokreślonej liczbie punktów tablica taka musi być zgodna z typem OLEVariant. Kolejny przykład przedstawia funkcję, która zwraca wariantową tablicę punktów w przestrzeni, a ilość liczb musi być wielokrotnością trzech. function trans3d(wspXYZ:array of double): OleVariant; {trans – dwolona nazwa funkcji} var i: integer; begin Result:=VarArrayCreate([0.High(WspXYZ)].varDouble; {zwracana wartość funkci} for i:=0 to high(wspXYZ) do {sprawdzenie wszystkich pkt} Result[i]:=WspXYZ[i] end; Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 31 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Zagadnienie: 7.B Automatyzacja generowania podstawowych elementów rysunkowych Automatyczne generowanie prostych rysunków, symboli graficznych itp. przy tworzeniu dokumentacji rysunkowej, jest bardzo wygodne i znacznie przyspiesza pracę nad rysunkiem, a im proces rysunkowy jest bardziej rozbudowany, automatyzacja tego procesu potrafi znacznie przyspieszyć tworzenie dokumentacji rysunkowej. Proces automatyzacji OLE AutoCADA, umożliwia generowanie rysunków dla obiektów: – – – ModelSpace; PaperSpace; Block; Przy czym metody generowania składników rysunku dla wyżej wymienionych obiektów są takie same. Poniżej przedstawiony przykłady kilku podstawowych operacji pozwalających na dodawanie obiektów rysunkowych do już otwartego rysunku. Linia Metoda pozwalająca na dodawanie dowolnej linii do obiektu to – Addline. Postać funkcji jest następująca: Line:=Object.AddLine(startpoint. EndPoint); Line – zmienna typu OLEVariant określająca rysowaną linię (np. lewy, prawy), definiowana w sekcji var, np. … var lewy, prawy: OleVariant; {oznaczenie rysowanych lini} … Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Start point – punkt początkowy linii; EndPoint – punkt końcowy linii; Gotowa funkcja może przyjąć postać: Lewy:=AcadDwg.AddLine((x1,y1,z1), (x2,y2,z2)); Przy czym, współrzędne x1,y1,z1, x2,y2,z2, należałoby poddać translacji dla interfejsu OLE i stosując funkcję przedstawioną w zagadnieniu 7.A funkcja przyjęłaby postać: Lewy:=AcadDwg.AddLine(trans(x1,y1),trans(x2,y2)); Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 32 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Okrąg Metoda pozwalająca na dodawanie okręgu do obiektu to – AddCircle. Postać funkcji jest następująca: Circle:=Object.AddCircle(Center, Radius) Circle – zmienna typu OLEVariant określająca rysowany okrąg (np. kolo1: OleVariant) Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Center – środek okręgu; Radius - promień okręgu; Gotowa funkcja może przyjąć postać: Kolo1:=AcadDwg.AddCircle((x1,y1,z1), r1)); Przy czym, współrzędne x1,y1,z1 należałoby poddać translacji dla interfejsu OLE i stosując funkcję przedstawioną w zagadnieniu 7.A funkcja przyjęłaby postać: Kolo1:=AcadDwg.AddCircle(trans(x1,y1), r1)); Łuk Metoda pozwalająca na dodawanie łuku do obiektu to – AddArc. Postać funkcji jest następująca: Arc:=Object.AddArc(Center, Radius, startangle, endAngle); Arc – zmienna typu OLEVariant określająca rysowany łuk(np. Luk1, Luk2: OleVariant) Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Center – współrzędne środka okręgu; Radius - promień łuku; StartAngle – kąt początkowy łuku; EndAngle – kąt końcowy łuku ; Gotowa funkcja może przyjąć postać: Luk1:=AcadDwg.AddArc((x1,y1,z1), r1,0,Pi/2)); Przy czym, współrzędne x1,y1,z1, należało by poddać translacji dla interfejsu OLE i stosując funkcję przedstawioną w zagadnieniu 7.A. funkcja przyjęła by postać: Luk1:=AcadDwg.AddArc(trans(x1,y1), r1,0,Pi/2)); Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 33 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Text Metoda pozwalająca na dodanie tekstu do obiektu to - AddText. Postać funkcji jest następująca: Text:=Object.AddText(TextString, InsertionPoint, Height); Text – zmienna typu OLEVariant określająca wprowadzany tekst (np. napis, text) Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … TextString – treść napisu jaka ma być wprowadzona do obiektu - zmienna typu string; InsertionPoint – parametr określający, wpsółrzedne tekstu; Height – parametr określający wysokość tekstu – zmienna typu Integer; Gotowa funkcja może przyjąć postać: napis:=AcadDwg.AddText(To jest mój napis, (x1,y1,z1), 3.5) Przy czym, współrzędne x1,y1,z1, należało by poddać translacji dla interfejsu OLE i stosując funkcję przedstawioną w zagadnieniu 7.A. Kreskowanie Metoda pozwalająca na dodatnie kreskowania do obiektu to - AddHatch. Postać funkcji jest następująca: Hatch:=Object.AddHatch(PatternType, PatternName, Associativity); Hatch – zmienna typu OLEVariant określająca kreskowany obiekt; Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … PatternType – parametr określający typ kreskowania– zmienna typu Integer; PatternName – parametr określający nazwę wzoru kreskowania zgodnie z typami widocznymi w programie AutoCAD, np. ANSI31 - zmienna typu string; Associativity – parametr określający czy kreskowanie ma być skojarzone z konturem lub nie; Po zdefiniowaniu obiektu kreskowania należy podać zewnętrzne i wewnętrzne granice kreskowania na pomocą metod: AppendOuterLoop(Loop); AppendInnerLoop(Loop). Parametr Loop jest taplicą obiektów rysunkowych tworzących zamknięty kontur. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 34 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Zagadnienie: 7.C Metody generowania obiektów 3D Prostopdałościan Metoda pozwalająca na dodanie do rysunku obiektu typu prostopadłościan to AddBox. Postać funkcji jest następująca: 3DSolid:=object.AddBox(Origin, Length, Width, Height); 3DSolid – zmienna typu OLEVariant określająca rysowany prostopadłościan, np.Prostopad; Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Length, Width, Height – parametry opisujące wymiary prostopadłościanu; Origin – punkt, w którym ma być umieszczony środek prostopadłościanu, przy czym należy pamiętać, iż prostopadłościan umieszczany jest w taki sposób, że krawędzie są równoległe do układu współrzędnych. Gotowa funkcja może przyjąć postać: Prostopad:=AcadDwg.addBox(trans3d(x1,y1,z1), a,b,h); Wykorzystana tu funkcja trans3d, służy do translacji zmiennych dla celów kompilacji i została dokładnie omówiona w zagadnieniu 7.A. Sfera Metoda pozwalająca na dodanie do rysunku obiektu 3D typu sfera to AddSphere. Postać funkcji jest następująca: 3DSolid:=object.Addsphere(Center, Radius); 3DSolid – zmienna typu OLEVariant określająca rysowany prostopadłościan, np.sfera; Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Center – parametr określający współrzędne środka sfery. Radius – parametr określający promień sfery Gotowa funkcja może przyjąć postać: Sfera:=AcadDwg.addSphere(trans3d(x1,y1,z1+r), r); Wykorzystana tu funkcja trans3d, służy do translacji zmiennych dla celów kompilacji i została dokładnie omówiona w zagadnieniu 7.A. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 35 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Stożek Metoda pozwalająca na dodanie do rysunku obiektu 3D typu stożek to AddCone. Postać funkcji jest następująca: 3DSolid:=object.AddCone(Center, BaseRadius, Height); 3DSolid – zmienna typu OLEVariant określająca rysowany prostopadłościan, np.sfera; Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Center – parametr określający współrzędne środka prostopadłościanu opisanego na stożku; BaseRadius – parametr określający promień podstawy stożka; Height – parametr określający wysokość stożka. Gotowa funkcja może przyjąć postać: stozek:=AcadDwg.addCone(trans3d(x1,y1,z1+h/2), h); Wykorzystana tu funkcja trans3d, służy do translacji zmiennych dla celów kompilacji i została dokładnie omówiona w zagadnieniu 7.A. Literatura 1. Wojciech Czyżewski, Edward Lisowski. AutoCAD. Automatyzacja zadań grafiki za pomocą Delphi, Helion, 2002. Temat 9 (2 godziny): Automatyzacja AutoCAD-a – przykłady aplikacji dla mechaników. Zagadnienia tematyczne: A. Aplikacje automatyzujące prace – połączenia spawane B. Aplikacje automatyzujące prace – połączenia wpustowe C. Aplikacje automatyzujące prace – połączenia śrubowe Zagadnienie: 9.A Aplikacje automatyzujące pracę – połączenia spawane Projektowanie konstrukcji spawanych wymaga określenia wielu parametrów dla poszczególnych złącz oraz narysowanie odpowiednich symboli na rysunku, im bardziej złożony rysunek i różnorodność spoin tym dłuższy czas potrzebny jest na wykonanie takiego rysunku. Zautomatyzowanie tego procesu możne znacznie przyspieszyć i ułatwić tworzenie tego typu dokumentacji rysunkowej (rys. 15). Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 36 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Rys. 15. Widok programu automatyzującego rysowanie połączeń spawanych w programie AutoCAD Aplikacja taka pozwala na wybieranie przedstawionych w formie przycisków symboli zdefiniowanych w przedmiotowej normie i budowanie na ich podstawie oznaczenia spoiny. Dodatkowo w oknie dialogowym użytkownik definiuje właściwości i parametry spoiny (rys. 16). Rys.16. Widok programu automatyzującego rysowań spawanych w programie AutoCAD – wybór rodzaju spoiny. Jednocześnie w trakcie wprowadzania opisu spoiny użytkownik widzi aktualny symbol opisywanej spoiny, który może zostać wstawiony do aktualnie tworzonej dokumentacji rysunkowej w programie AutoCAD (rys. 17). Rys. 17. Widok programu automatyzującego rysowanie połączenia spawanego w programie AutoCAD – okno przedstawiające aktualny symbol spoiny wstawiany do obszaru rysunku. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 37 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Po tak wygenerowanym symbolu spoiny w sposób automatyczny, program generuje go w programie AutoCAD i wstawia do przestrzeni rysunkowej we wskazanym miejscu (rys. 18). Rys. 18. Widok programu automatyzującego rysowanie połączenia spawanego w programie AutoCAD - widoczna nakładka i efekt działania nakładki. Zagadnienie: 9.B Aplikacje automatyzujące pracę – połączenia wpustowe Podobnie sytuacja wygląda przy rysowaniu wpustów, które są znormalizowane, a wymiary poprzeczne wpustów dobiera się w zależności od średnicy czopa. Wymiary poprzeczne wpustów dobiera się w zależności od średnicy czopa, a długość wpustu podlega obliczeniu z warunku na docisk powierzchni bocznej wpustu współpracującej z rowkiem czopa i piasty. Program, który przedstawiono poniżej został opracowany w taki sposób, aby zautomatyzować proces rysowania w programie AutoCAD połączeń wpustowych, z uwzględnieniem obliczeń wytrzymałościowych (rys. 19). Rys. 19. Widok programu automatyzującego rysowanie połączenia wpustowego w programie AutoCAD. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 38 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Rys. 20. Widok programu automatyzującego rysowanie połączenia wpustowego w programie AutoCAD - widoczne działanie nakładki i efekt rysowania połączenia w programie AutoCAD. Po wprowadzeniu wszystkich danych zostanie wygenerowany rysunek w postaci widoku, na którym automatycznie zostanie narysowany kontur połączenia (wałek, wpust, gniazdo). Po wygenerowaniu rysunku połączenia program wstawia widok tego połączenia w programie AutoCAD, we wskazanym miejscu na rysunku. Przy wprowadzaniu momentu, mocy obrotów, są uwzględniane obliczenia wytrzymałościowe, a dane do rysunku są pobierane automatycznie z tabel zawierających znormalizowane wymiary. Zagadnienie: 9.C Aplikacje automatyzujące pracę – połączenia śrubowe Połączenia gwintowe są bardzo często stosowane przy projektowaniu różnego rodzaju maszyn i urządzeń, a ich różnorodność może powodować utrudnienia w trakcie sporządzania dokumentacji rysunkowej. Dzięki zastosowaniu automatyzacji procesu rysowania połączenia gwintowanego, można znacznie przyspieszyć sam proces rysowania połączenia w programie AutoCAD, jak również połączeń wg normy i obliczenia wytrzymałościowe. Tworząc aplikację, która ma wspomagać rysowanie połączeń gwintowych, można dodatkowo wzbogacić ją o wybór elementów konkretnego producenta lub dostawcy, tworząc program, który nie tylko rysuje nam połączenia gwintowe, ale również współpracuje z dowolną bazą danych. Selekcja jest wykonywana automatycznie przez stworzoną przez nas aplikację, tak samo jak i rysunek połączenia śrubowego w programie AutoCAD. Prezentowany poniżej program pozwala na podstawie wybranych elementów składowych połączenia śrubowego, wygenerowanie odpowiedniego symbolu i wstawienie go do programu AutoCAD wraz ze wszystkimi atrybutami opisującymi to połączenie (rys. 21-24). Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 39 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Rys. 21. Widok programu automatyzującego rysowanie połączenia śrubowego w programie AutoCAD – wybór śruby. Rys. 22. Widok programu automatyzującego rysowanie połączenia śrubowego w programie AutoCAD – wybór podkładki. Rys. 23. Widok programu automatyzującego rysowanie połączenia śrubowego w programie AutoCAD – wybór nakrętki. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 40 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Rys. 24. Widok programu automatyzującego rysowanie połączenia śrubowego w programie AutoCAD – wybór rodzaju gwintu. Literatura 1. Wojciech Czyżewski, Edward Lisowski. AutoCAD. Automatyzacja zadań grafiki za pomocą Delphi, Helion, 2002. Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 41