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=AB
NIE
B=BA
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

Podobne dokumenty