Rozdział 1. Wstęp do programowania
Adam Boduch
Programowanie to formułowanie algorytmu rozwiązującego dany problem w postaci akceptowanej przez komputer. Programowanie ma na celu skuteczne i zgodne z oczekiwaniami wykorzystanie komputera. Powszechnie uważa się, że dobre programowanie łączy elementy inżynierii, rzemiosła i sztuki.
To tyle, jeśli chodzi o definicję słowa programowanie, zawartą w encyklopedii WIEM (http://wiem.onet.pl). W rzeczywistości definicja ta jest trochę lakoniczna; niniejszy rozdział ma wprowadzić Czytelnika w świat czynności związanych z programowaniem i przedstawić podstawowe zagadnienia dotyczące tej tematyki.
W rozdziale:
*poznasz krótką historię informatyki,
*przeczytasz o kilku najpopularniejszych językach programowania,
*dowiesz się, czym jest Delphi oraz Object Pascal.
1 Historia informatyki
2 Czym jest programowanie?
3 Języki programowania
3.1 Asembler
3.2 Fortran
3.3 C
3.4 C++
3.5 Perl
3.6 PHP
3.7 Turbo Pascal
3.8 Java
3.9 C#
4 Kilka słów o kompilatorach
4.10 Działanie kompilatorów
4.10.1 Tworzenie kodu źródłowego
4.10.2 Prekompilacja
4.10.3 Kompilacja do kodu Asemblera
4.10.4 Optymalizacja kodu
4.10.5 Asemblacja
4.10.6 Konsolidacja
4.11 Który kompilator wybrać?
5 Dzień programisty
6 Delphi
6.12 Object Pascal
6.13 Delphi — czy warto?
7 Co będzie potrzebne w trakcie nauki?
8 Instalacja Delphi
8.14 Wersje Delphi
8.15 Cennik
8.16 Wymagania Delphi
8.17 Instalacja
9 Jak się uczyć?
9.18 Nie ucz się na pamięć!
9.19 Początkowe trudności
9.20 Pomoc systemowa
9.21 Praktyka
9.22 FAQ
9.23 Testy
10 Podstawowe okna Delphi
10.24 Welcome Page
10.25 Okno główne
10.25.7 Menu
10.25.8 Paski narzędziowe
10.26 Projektant formularzy
10.27 Paleta narzędzi
10.28 Inspektor obiektów
10.28.9 Zakładka Properties
10.28.10 Zakładka Events
10.29 Menedżer projektu
10.29.11 Project Manager
10.29.12 Model View
10.29.13 Data Explorer
10.30 Edytor kodu
10.30.14 Okno komunikatów
10.31 Ukrywanie okna
11 Pierwszy projekt
11.32 Tworzenie projektu
11.33 Zapisywanie projektu
11.34 Uruchamianie programu
11.35 Zamykanie programu
11.36 Otwieranie projektu
12 Kompilacja projektu
13 Pliki projektu
14 Przydatne odnośniki
15 Test
16 FAQ
17 Podsumowanie
Historia informatyki
Historia informatyki we współczesnym świecie sięga lat 40. XX wieku, kiedy to pojawiły się pierwsze kalkulatory. Jednak pierwsze maszyny liczące (liczydła) były używane 440 lat p.n.e. w Grecji. Te zmyślne przedmioty nazywano abakusami. Były to proste przyrządy w postaci deski z wyżłobionymi rowkami, w których umieszczano kamyki.
W 1642 r. wynaleziono arytmometr — urządzenie, które jest poprzednikiem współczesnego kalkulatora. Oczywistym jest, że już wieki temu ludzie tworzyli różnego rodzaju wynalazki, które miały im ułatwiać życie. Tak jest zresztą do dzisiaj — obecne systemy informatyczne, bazy danych, potężne aplikacje, elektroniczne notatniki, dyktafony — wszystko to ma za zadanie odciążyć człowieka od nużących czy monotonnych czynności, ułatwić pracę i codzienne funkcjonowanie.
Czym jest programowanie?
Pewnym jest, że Czytelnik spotkał się z tym określeniem niejednokrotnie, czy to oglądając telewizję, czy przeglądając prasę, czy też w życiu codziennym. Z drugiej strony wiele osób nie ma w ogóle pojęcia, co to pojęcie tak naprawdę oznacza. Przeciętny człowiek może mieć nieco mylne wyobrażenie programisty jako człowieka w grubych okularach, który całe dnie, obłożony fachową literaturą, spędza przed komputerem. Na pewno zdarzają się i tacy zapaleńcy, być może dlatego że… programowanie jest ciekawe! Tak, jest ciekawe, ale z drugiej strony trzeba mieć predyspozycje do takiej pracy. Jeżeli ktoś zabiera się za programowanie z przymusu, to pewnie nie będzie miał z tego żadnej przyjemności. Jednak jeśli samodzielnie napisany program (choćby nie wiem, jak byłby skromny) przyniesie swojemu twórcy poczucie satysfakcji i dumy — zapewne programowanie wciągnie go jeszcze bardziej.
Programowanie, ogólnie mówiąc, polega na rozwiązywaniu pewnych problemów. Niezłym przykładem jest liczydło. Liczydło służy do wspomagania człowieka w poważniejszych obliczeniach matematycznych. Celem programisty jest napisanie programu, który wspomoże człowieka przy wykonywaniu naprawdę trudnych obliczeń.
Programista, chcąc zrealizować zadanie, musi zapisać pewien algorytm, korzystając z ciągu instrukcji rozpoznawalnych przez komputer. Wszelkie polecenia w danym języku programowania są oczywiście wpisywane przy użyciu klawiatury.
Algorytm to zestaw instrukcji, czynności, które należy wykonać, aby zrealizować pewne zadanie w skończonej liczbie kroków.
Obecnie istnieje wiele narzędzi, które wspomagają programistę podczas tworzenia aplikacji. Jak to wygląda w środowisku MS Windows? Istnieje edytor tekstu — typowy edytor dla Windows z oknami, menu oraz ikonami. W owym edytorze wpisujemy jakieś polecenia — dajmy na to — w języku C. Oczywiście nie mogą to być byle jakie polecenia, lecz takie, które będą zrozumiałe dla kompilatora.
Kompilator to program, który analizuje kod źródłowy, sprawdza, czy nie zawiera on błędów, oraz ewentualnie tworzy na jego podstawie aplikację wykonywalną.
Kod źródłowy, potocznie zwanym źródłem, zazwyczaj jest tekstem zawierającym różne polecenia języka programowania. Kody źródłowe są czytelne dla człowieka, programisty, który może je w dowolny sposób modyfikować.
Chciałbym już na samym początku rozwiać ewentualne wątpliwości. Pomimo iż współczesne języki programowania znacznie ułatwiają pracę, programowanie staje się prostsze, lecz z pewnością nie jest to zajęcie banalne! Jeśli zechcę napisać grę w kółko i krzyżyk, nie osiągnę celu wpisując, przykładowo, takie polecenia:
utwórz_planszę;
liczba_pol: 6;6;
nazwa_użytkownika: Józek;
...
Nie należy się jednak zrażać zbyt szybko. Języki programowania udostępniają pewne mechanizmy, których trzeba się nauczyć, aby dojść do wyznaczonego sobie celu. Tymi mechanizmami są tzw. funkcje, o których teraz tylko wspomnę. Przykładowo, aby narysować poziomą linię na ekranie, trzeba wydać polecenie — np. LineTo
, które narysuje linię w odpowiednim miejscu ekranu. W trakcie czytania tej książki Czytelnik może nauczyć się sposobu tworzenia rozbudowanych aplikacji, działających w systemie Windows. Nie trzeba mieć w tym celu większego doświadczenia z komputerami ani z programowaniem. Postaram się prezentować kolejne etapy wiedzy przejrzyście i w taki sposób, aby nikt nie miał problemów z jej zrozumieniem.
Teraz należałoby jednak powrócić do naszych poleceń języka programowania. Wszystko polega na wpisaniu odpowiednich komend w dowolnym edytorze tekstu, a następnie — na zapisaniu owego pliku jako zwykłego pliku tekstowego. Powiedzmy, że mamy program, który wygląda tak jak ten poniżej:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello World\n");
return 0;
}
Jest to prosty program napisany w języku C, który wyświetla napis Hello World
, a następnie kończy swe działanie. Powyższy fragment należy wpisać w dowolnym edytorze tekstu i zapisać jako plik na dysku — np. pod nazwą hello.c. W tym momencie mamy już plik z kodem źródłowym programu napisanego w języku C.
Języki programowania
Jak już powiedziałem, kod programu musi być zapisany w określonym języku programowania (np. w tej książce prezentuję programy w utworzone w Delphi). Istnieją dziesiątki języków programowania — bardziej lub mniej popularne oraz bardziej lub mniej skomplikowane. Każdy z tych języków wyróżnia się inną składnią i innym sposobem działania. W swojej „karierze” Czytelnik może spotkać się z następującymi językami:
*Ada
*Asembler
*Algol
*Basic
*QBasic
*QuickBasic
*Turbo Basic
*Visual Basic
*C
*C#
*C++
*Clipper
*COBOL
*Fortran
*Haskel
*Java
*JavaScript
*LISP
*Logo
*PHP
*Pascal
*Perl
*Python
*Prolog
*Smalltalk
*Tcl
To jest tylko przykładowa lista dostępnych języków programowania. Pokrótce omówię niektóre z nich: te, które miały duży wpływ na rozwój informatyki.
Asembler
Asembler [#]_ jest niskopoziomowym językiem programowania zaprojektowanym w latach 1947 – 1952 przez Murraya Grace Hoppera. Asembler był w gruncie rzeczy rewolucyjny — uwalniał programistę od konieczności zapisywania programów w formie binarnej. W tym języku jedno polecenie praktycznie odpowiada jednemu rozkazowi procesora. Obecnie Asembler jest uważany za trudny język programowania (porównując go np. z Delphi), ale wciąż bywa używany. Podstawową zaletą Asemblera jest to, że daje niesamowite możliwości w manipulowaniu komputerem. Większość języków wysokiego poziomu pozwala na włączanie wstawek Asemblera do swojego kodu. W praktyce wygląda to tak, że podczas pisania kodu — np. w Pascalu możemy do tworzonego programu dołączyć fragment kodu Asemblera. W ten sposób większość obecnych programów nie jest pisana w całości w Asemblerze (ze względu na dość skomplikowaną składnię), aczkolwiek zawiera wstawki tego języka. Przykładowo, system operacyjny Linux był pisany w języku C, mimo to nie obeszło się bez zastosowania fragmentów kodu w Asemblerze.
W powyższym opisie znajdują się dwa pojęcia — język wysokiego oraz niskiego poziomu. W praktyce czynnikiem rozróżniającym język poziomu wysokiego od niskiego jest jego złożoność. Przykładowo, język Pascal jest językiem wysokiego poziomu, bowiem zawiera gotowe funkcje i procedury (np. do wyświetlania tekstu na ekranie służy komenda writeln
) i dzięki temu jest łatwy do nauczenia się. Również projektowanie aplikacji w językach wysokiego poziomu jest o wiele szybsze niż w Asemblerze. W Asemblerze w celu wyświetlenia tekstu na ekranie nie obeszłoby się bez obsługi odpowiedniego przerwania.
Pojęcie przerwania związane jest z systemem operacyjnym, a konkretnie z procesorem. Przerwanie powoduje wstrzymanie aktualnie wykonywanego programu i wykonanie przez procesor kodu procedury obsługi. Jest to pojęcie związane z bardziej zaawansowanymi aspektami programowania, nie musisz teraz się tym przejmować.
Fortran
Nazwa Fortran jest zlepkiem angielskich słów Formula Translator. Fortran jest uważany za pierwszy język wysokiego poziomu. Został zaprojektowany w latach 50. XX wieku przez Johna Backusa i zespół IBM. Fortran jest wykorzystywany przede wszystkim do pisania programów służących do analizy numerycznej i do wykonywania skomplikowanych obliczeń naukowych. Język ten zyskał niesamowitą popularność i jest używany do dzisiaj (jako nowy, ulepszony język programowania — Fortran 90, Fortran 95 oraz Fortran 2000).
C
Rok 1969 był rewolucyjny w informatyce. Wszystko za sprawą dwóch ludzi — Kena Thompsona oraz Dennisa Ritchiego. Zaczęli oni pracę nad nowym systemem operacyjnym — UNIX. Przy tej okazji Dennis Ritchie na bazie języka B opracował język C, który miał ułatwić pisanie tego systemu operacyjnego. W 1973 w języku C utworzono jądro systemu UNIX, co było wielkim sukcesem. Język C używano na początku jedynie w firmie Bell Labs (gdzie powstał), jednak wkrótce stał się dominującym językiem programowania, wykorzystywanym na całym świecie — i tak jest do dzisiaj. Język C charakteryzuje się wysoką wydajnością, jest stosunkowo prosty (o wiele prostszy od Asemblera), a jednocześnie niezwykle elastyczny.
C++
W roku 1983 Bjarne Stroustrup zmodyfikował język C, dodając do niego nowe funkcje. Przede wszystkim rewolucyjną zmianą w porównaniu z C jest możliwość programowania obiektowego. To zagadnienie zostanie dokładniej omówione w dalszej części książki. C++ (na początku miał nosić nazwę „C z klasami”) jest również niezwykle popularnym językiem programowania, szeroko stosowanym przez programistów na całym świecie. Języki C oraz C++ są do siebie bardzo podobne, więc znajomość jednego nie stanowi wielkiej przeszkody w nauczeniu się drugiego.
Perl
Perl (ang. Practical Extraction and Report Language) jest interpretowanym językiem programowania autorstwa Larrego Walla, bardzo często wykorzystywanym jako język skryptowy na stronach WWW. W zamyśle autora język Perl miał pomóc w rozwiązywaniu trudnych zadań oraz przyspieszać pracę nad programem.
Perl nie jest kompilowanym językiem programowania. Oznacza to, że nie następuje kompilacja programu, czyli przekształcanie kodu napisanego przez programistę do postaci pliku wykonywalnego. Zamiast tego w komputerze musi być zainstalowany tzw. interpreter, który będzie odczytywał instrukcje języka i odpowiednio na nie reagował.
Naturalnym środowiskiem Perla jest system UNIX, aczkolwiek Perl jest także dostępny w wersjach na inne platformy. Bardzo często jest wykorzystywany podczas tworzenia skryptów CGI przeznaczonych dla stron WWW. Obecnie Perl jest wypierany przez młodszy i prostszy język PHP, choć świetnie się nadaje się do pisania skryptów manipulujących plikami tekstowymi.
Obecnie najnowszą, wciąż rozwijaną wersją tego języka jest Perl 6.
CGI, czyli Common Gateway Interface, jest obecny praktycznie od początku istnienia internetu i stron WWW. CGI umożliwia dynamiczne generowanie stron WWW, czyli w praktyce pisanie tak różnych skryptów jak księgi gości, fora dyskusyjne itp.
PHP
PHP (angielski akronim rekurencyjny PHP Hypertext Preprocessor) jest językiem programowania, który w ostatnich latach robi oszałamiającą karierę. Autorem tego języka jest Rasmus Lerdorf, który napisał pierwszą jego wersję w roku 1995. PHP — podobnie jak Perl — jest interpretowanym językiem programowania, wykorzystywanym głównie do generowania dynamicznych stron WWW. Jego zaletą jest niezwykła prostota i jednocześnie duże możliwości. Ogólnie rzecz biorąc, PHP jest jednym z najprostszych języków programowania.
PHP jest darmowy, oparty na licencji GPL (ang. GNU Public License) i rozwijany w dalszym ciągu przez setki programistów z całego świata.
Turbo Pascal
Początki Pascala — jako języka programowania — sięgają początku lat 70. XX wieku. Opracowano go specjalnie do nauki programowania. Jest to bardzo prosty język, dający jednocześnie duże możliwości. W roku 1983 firma Borland wypuściła na rynek komercyjny produkt o nazwie Turbo Pascal i ta data jest uważana za przełomową. Turbo Pascal natychmiast zyskał popularność i w dalszym ciągu ją utrzymuje.
Także dzisiaj Turbo Pascal jest zalecany do nauki programowania dla początkujących: uczy myślenia programistycznego. Jest wykorzystywany również na różnych szczeblach nauczania: na studiach czy w szkołach średnich do rozwiązywania problemów i tworzenia algorytmów.
Java
Język Java został opracowany przez firmę Sun Microsystems. Każdy z pewnością nieraz słyszał o tym języku, gdyż ostatnimi czasy stał się bardzo popularny, głównie dzięki niezależności od systemu operacyjnego. Z reguły programy napisane i skompilowane dla platformy Windows nie będą działały w innych systemach — np. w Linuksie. W przypadku Javy jest inaczej, ponieważ kod źródłowy nie jest kompilowany na kod maszynowy, tak jak to ma miejsce w innych językach programowania, ale zostaje poddany procesowi translacji na kod pośredni. Ten z kolei zostaje poddany procesowi interpretacji przez tzw. maszynę wirtualną, która musi być zainstalowana w systemie.
Można powiedzieć, że maszyna wirtualna jest programem, który wykonuje inne programy. W przypadku Javy maszyna wirtualna interpretuje kod pośredni.
Maszyna wirtualna Javy została zaimplementowana dla większości systemów operacyjnych i dzięki temu ten język programowania jest tak uniwersalny.
O maszynach wirtualnych opowiem w kolejnych rozdziałach tej książki.
C#
C# (czytaj: c szarp) jest nowym językiem programowania, opracowanym przez firmę Microsoft w ramach strategii .NET (więcej informacji o .NET znajduje się w dalszej części książki). C# łączy w sobie zalety języka C (efektywność), C++ (obiektowość), Visual Basic (łatwość projektowania) oraz Javy (bezpieczeństwo). Podobnie jak w Javie, programy napisane w C# nie podlegają kompilacji, lecz tylko translacji na kod pośredni.
Podstawy programowania w języku C# zostały omówione w dodatku A niniejszej książki.
Kilka słów o kompilatorach
Wcześniej Czytelnik dowiedział się, że kompilator (ang. compiler) jest programem. Dość skomplikowanym programem, który umożliwia tworzenie własnych programów. Brzmi dość dziwnie prawda? „Program, dzięki któremu możemy tworzyć inne programy”.
Wiele osób zastanawia się niekiedy, czym właściwie jest program? W końcu użytkując komputer stale korzystamy z aplikacji, jakimi są edytory tekstu, narzędzia biurowe, gry itp. Programy są w rzeczywistości plikami binarnymi, zapisanymi w kodzie maszynowym. Kiedyś programowanie było prawdziwą sztuką, niesamowitym wyzwaniem, wiedzą, którą posiadali tylko nieliczni. Programowanie wymagało bowiem znajomości kodu maszynowego. Była to praca monotonna, nudna i czasochłonna.
Obecnie kompilatory są niezwykle szybkie — pozwalają na skompilowanie naszego programu nawet w kilka milisekund (w zależności od rozmiarów kodu). Jednym z najpopularniejszych darmowych kompilatorów na świecie jest GCC (ang. GNU Compiler Collection), czyli darmowa kolekcja kompilatorów. Popularność GCC jest na pewno związana z kilkoma czynnikami:
*ceną (kompilator jest darmowy),
*niezawodnością (kompilator jest tworzony od ponad 10 lat przez rzeszę programistów),
*dostępnością dla różnych platform (Windows, Linux, DOS, UNIX),
*możliwością kompilacji kodu napisanego w różnych językach (Java, C, C++ i inne).
Pierwsza wersja GCC, napisana przez Richarda Stallmana, ukazała się w 1987 roku. Obecna wersja, oznaczona jako 3.3.2, jest udostępniona do pobrania ze strony http://gcc.gnu.org/.
Działanie kompilatorów
Można by zapytać, w jakim celu piszę o GCC czy o języku C — przecież nie jest to tematem niniejszej książki. Tak, to prawda — chciałbym jednak opisać kilka takich ciekawostek dla Czytelnika, który dopiero zaczyna interesować się programowaniem. Poniżej przedstawiam krótki opis działania kompilatora GCC — jak to się dzieje, że po chwili z naszego kodu źródłowego powstaje plik wykonywalny (gotowa aplikacja). Będzie to także ciekawe porównanie działania kompilatora kompilującego do standardowego pliku wykonywalnego i kompilatora .NET.
Tworzenie kodu źródłowego
To jest praca, który należy do programisty. Przed kompilacją programu trzeba napisać jego kod, używając danego języka programowania.
Prekompilacja
Ten proces polega na usuwaniu komentarzy z kodu źródłowego. Teraz następuje również odczytanie makrodefinicji języka C, które zaczynają się od słowa #define
. Nie jest to jednak tematem tej książki i nie będziemy się tym szczegółowo zajmować.
Czytelnik, który miał wcześniej styczność z językiem C, zapewne wie, czym są komentarze czy makrodefinicje. Tematem komentarzy w językach programowania zajmiemy się w dalszej części książki.
Kompilacja do kodu Asemblera
Proces ten polega na wyszukiwaniu słów kluczowych dla danego języka programowania. Potem następuje przekształcenie tego kodu na instrukcje Asemblera. W tym czasie, jeżeli kompilator wykryje jakieś błędy związane z kodem źródłowym — wstrzyma działanie i zasygnalizuje błąd.
Optymalizacja kodu
Następnie kompilator analizuje kod Asemblera i poddaje go optymalizacji. Jest to opcjonalna funkcja w kompilatorach GCC, lecz warto ją wykorzystywać, gdyż często jest przydatna. Należy też wspomnieć, że możliwość optymalizacji kodu jest dość zaawansowaną funkcjonalnością kompilatora.
Optymalizacja jest procesem poprawiania kodu programu, tak aby jego wykonywanie było jak najbardziej efektywne, a sam program zajmował możliwie jak najmniej pamięci. Optymalizacja powinna należeć do programisty jako wyrobiony nawyk pisania efektywnych programów, lecz w obecnych czasach maszyna znacznie ułatwia tę część pracy.
Asemblacja
Zoptymalizowany kod Asemblera może zostać poddany asemblacji. Proces asemblacji jest związany z przekształcaniem kodu Asemblera na kod maszynowy.
Konsolidacja
Konsolidator, nazywany też często linkerem, tworzy aplikację wykonywalną, którą można uruchomić w sposób niezależny od kompilatora i — przykładowo — przetestować jej działanie.
Który kompilator wybrać?
Jest to dość trudne pytanie i nie ma na nie jednoznacznej odpowiedzi. Obecnie dla systemu Windows są popularne kompilatory komercyjne — firm Microsoft oraz Borland. Jednak podstawową ich wadą jest cena, która dla wielu stanowi podstawową barierę.
Drugą sprawą jest wybór języka programowania. Oczywiście my w tej książce będziemy korzystali z Delphi, a do Delphi istnieje jeden kompilator tworzony przez firmę Borland (http://www.borland.com) i jest to kompilator płatny (o Delphi jednak powiemy w kolejnym podrozdziale). Jeżeli Czytelnikowi zależy na darmowym kompilatorze, może skorzystać z Free Pascal Compiler (darmowy kompilator języka Pascal), GCC (w przypadku programowania w C/C++ albo Javie) lub DJGPP (kompilator języka C).
Jeżeli ktoś jest zainteresowany komercyjnymi kompilatorami, ma do wyboru kilka z nich: Visual Studio (kompilator C++, Visual Basic), Borland C++ Builder, Borland C# Builder (język C#).
Dzień programisty
Przedstawiciele niemal każdego zawodu raz w roku obchodzą swoje święto. Święto programisty przypada na 256. dzień roku. Święto programisty nie jest jeszcze zbyt powszechne w Polsce i na świecie, ale wydaje mi się, że jest to dobry pomysł i warto go rozpowszechnić.
Pewnie ciekawy Czytelnik zapyta, dlaczego akurat wybrano 256. dzień w roku? Odpowiedź jest prosta — 2^8 daje 256, a to jest z kolei liczba wartości możliwych do zaprezentowania w jednym bajcie.
Delphi
Do tej pory mówiliśmy jedynie o najpopularniejszych językach programowania, ale nie powiedzieliśmy nic o języku, który jest tematem tej książki…
Delphi stanowi środowisko szybkiego projektowania aplikacji typu RAD.
RAD to akronim słów Rapid Application Development, co oznacza szybkie projektowanie aplikacji. Jest to technologia usprawniająca tworzenie złożonego oprogramowania, m.in. poprzez udostępnienie gotowych bibliotek i komponentów. Projektowanie interfejsu odbywa się za pomocą myszy, metodą przeciągnij i upuść. Narzędziami typu RAD, działającymi w środowisku Windows, są między innymi Delphi, C++ Builder, Visual Basic, czy też Visual C++.
W skład środowiska Delphi wchodzi kompilator, edytor kodu oraz wiele innych narzędzi i funkcji ułatwiających szybkie tworzenie aplikacji. Nie będę jednak teraz o nich mówić, aby nie mieszać Czytelnikowi w głowie —interfejsem Delphi i jego funkcjami zajmiemy się szczegółowo w kolejnych rozdziałach tej książki.
Niegdyś Delphi był jedynie środowiskiem projektowania aplikacji — nie samodzielnym językiem programowania, jak to jest teraz. W tej chwili bowiem mówi się o Delphi jako o języku programowania (ang. programming language), lecz wcześniej zwykło się używać terminu Object Pascal (o tym za chwilę).
Pierwsza wersja Delphi ukazała się w 1995 roku, była przeznaczona na platformę 16-bitową — Windows 3.1 — i stanowiła poważny krok naprzód. Oto zaprezentowano programistom zupełnie nowe, wizualne środowisko tworzenia aplikacji. Tworzenie programów stało się czynnością o wiele prostszą niż do tej pory.
Już rok później — po powstaniu Windows 95 — Borland wprowadził na rynek nową wersję Delphi. Od tego momentu środowisko to stało się wyjątkowo popularne. Posługują się nim liczni programiści, a w internecie powstało tysiące stron dotyczących programowania w Delphi.
Kolejne wersje zawierały coraz nowsze ulepszenia — wszystko z myślą o ułatwieniu programiście pracy. Najnowszą wersją tego środowiska programistycznego jest Delphi 2005.
Warto zwrócić uwagę, że Borland zmienił numeracje swojego czołowego produktu. Pierwsza wersja Delphi przeznaczona była dla środowiska Windows 3.11 (Delphi 1). Kolejne wersje — od 2. do 7. — były tworzone z myślą o pracy w systemach Windows 95/98/NT/2000/XP. Delphi 8 był dużym krokiem do przodu, gdyż pracując pod kontrolą Windows, kompilował aplikacje, które działały jedynie na platformie .NET (więcej o .NET można znaleźć w kolejnym rozdziale).
Delphi 2005 (inaczej — Delphi 9) jest produktem rewolucyjnym. Łączy w sobie zalety Delphi 7 oraz Delphi 8. Umożliwia także projektowanie aplikacji w języku C#.
Object Pascal
Object Pascal jest młodszym bratem Turbo Pascala, zaimplementowanym w Delphi w roku 1995 — w pierwszej wersji Delphi stworzonej dla Windows 3.1.
Dlaczego akurat Object Pascal? Poprzednia wersja Pascala uległa modernizacji i ulepszeniu — m.in. poprzez dodanie obsługi klas. Dzięki temu Pascal zyskał możliwość programowania obiektowego (ang. object programming). O klasach i programowaniu obiektowym będziemy mówić w rozdziale 6.
Delphi — czy warto?
Większość Czytelników tej książki zapewne jest już przekonana do Delphi. Tym, którzy się wahają, w kilku punktach zaprezentuję zalety Delphi:
*efektywny kompilator,
*komponenty ułatwiające szybkie tworzenie aplikacji,
*obsługa wielu systemów bazodanowych,
*wizualne tworzenie aplikacji,
*wiele funkcji wspomagających projektowanie oprogramowania.
Częstym „zarzutem” kierowanym w stronę Delphi jest jego prostota, a dokładniej — mała możliwość manipulacji pracą procesora (w porównaniu do tego, na co pozwala np. C). Pragnę jednak zapewnić Czytelnika, że Delphi jest w pełni profesjonalnym, efektywnym i popularnym językiem programowania. Umiejętność pisania programów w tym języku jest niewątpliwym atutem także w trakcie poszukiwania pracy (coraz więcej ofert pracy na rynku przeznaczonych jest dla programistów Delphi).
Co będzie potrzebne w trakcie nauki?
Właściwie pisząc tę książkę założyłem, że Czytelnik posiada umiejętności z zakresu posługiwania się systemem Windows na poziomie dobrym oraz że zna język angielski przynajmniej w stopniu podstawowym. Jest to o tyle ważne, że całe Delphi, dokumentacja oraz system pomocy są zapisane w tym języku. Nazwy funkcji języka Delphi są przejrzyste i często, znając język angielski, można zorientować się co do działania danej funkcji. Przykładowo, funkcja CloseFile
zamyka uprzednio otwarty plik. Łatwo się tego domyśleć, prawda? W tym przypadku nazwę funkcji stanowi zlepek dwóch słów — close (ang. zamknij) oraz file (ang. plik).
Inny przykład: funkcja MkDir
służy do tworzenia katalogu (folderu) na dysku. Jest to zlepek słów make (ang. utwórz) oraz dir (ang. katalog).
Język angielski przydaje się również podczas ewentualnych problemów z kompilacją kodu. W takim przypadku kompilator (który jest wbudowany w Delphi) zwraca użytkownikowi uwagę, że popełniono błąd oraz wskazuje numer linii. Dokładniejsze wskazówki zawiera komunikat informacyjny (oczywiście w języku angielskim).
Instalacja Delphi
Instalacja całego środowiska może być nieco kłopotliwa, gdyż nie wystarczy zainstalowanie tylko jednego elementu. Potrzebnych jest kilka pakietów, które umożliwiają tworzenie aplikacji w środowisku .NET. Są to:
*Microsoft .NET Framework SDK v1.1,
*Microsoft .NET Framework v1.1 Redistributable Package,
*Microsoft Visual J# v1.1 Redistributable Package,
*Microsoft Internet Explorer 6 SP1,
*Microsoft XML Core Services (MSXML) v4.0 SP2.
Wszystkie te pakiety można pobrać z internetu. W sumie jest to około 200 MB danych.
Pakiet .NET Framework posiada pewne ograniczenie. Przykładowo ten, z którego korzystam pisząc tę książkę, działa jedynie pod kontrolą systemu Windows 2000, Windows XP lub Windows 2003 (który standardowo jest wyposażony w pakiet .NET Framework SDK).
Wersje Delphi
Firma Borland tym razem postanowiła wydać swój produkt w trzech odmiennych wersjach: Professional, Enterprise i Architect. Różnią się od siebie oczywiście ceną oraz udostępnionymi funkcjami. W tabeli 1.1 przedstawiono porównanie pomiędzy poszczególnymi wersjami Delphi [#]_.
Tabela 1.1. Zestawienie cech różnych wersji Delphi
Cecha | Architect | Enterprise | Professional |
---|---|---|---|
Kompilatory Delphi oraz C# | + | + | + |
Wsparcie dla Win32 oraz .NET | + | + | + |
Refaktoryzacja, wyodrębnianie metod | + | + | + |
Historia projektu | + | + | + |
Funkcja synchronicznej edycji | + | + | + |
Debuger dla projektów Win32 oraz .NET | + | + | + |
ECO II | + | ||
Edytor WYSIWYG dla ASP.NET | + | + | + |
Technologia IntraWeb | + | + | |
Obsługa baz danych | + | + | |
dbGo dla ADO | + | + | + |
Integracja z pakietem StarTeam | + | + | |
MIDAS/DataSnap | + | + |
Cennik
Borland Delphi jest produktem komercyjnym, tak więc należy go kupić. Producent udostępnił jednak tzw. wersję trial, która działa tylko przez pewien czas i nie można wykorzystywać jej w celach komercyjnych. Wersje trial można pobrać ze strony producenta — http://www.borland.com.
Tabela 2.2. przedstawia cennik produktu (stan na styczeń 2005) według ustaleń producenta. Wszystkie ceny są cenami netto.
Tabela 2.2. Cennik Borland Delphi
Produkt | Cena |
---|---|
Delphi Professional | $999 |
Delphi Enterprise | $2500 |
Delphi Architect | $3000 |
Możliwe jest również uaktualnienie produktu z Delphi 8 do Delphi 2005 po niższej cenie — po szczegóły odsyłam na stronę polskiego przedstawicielstwa firmy Borland: www.borland.pl.
Wymagania Delphi
Wydajne działanie środowiska Delphi może być kłopotliwe dla osób posiadających nieco słabszy sprzęt. Biorąc pod uwagę równoczesne działanie .NET Framework, systemu operacyjnego oraz Delphi, 128 MB RAM może okazać się niewystarczającą ilością. W takich warunkach praca z Delphi może okazać się wręcz irytująca, dlatego zaleca się wyposażenie komputera w większą ilość pamięci. W moim komputerze z procesorem AMD 950 MHz oraz z 384 MB DDRAM całość działa wystarczająco szybko.
Natomiast według zaleceń firmy Borland, pożądaną konfiguracją jest procesor minimum 850 MHz, 512 MB RAM oraz 800 MB wolnego miejsca na dysku. Jeżeli zaś chodzi o minimalne wymagania sprzętowe, pozwalające na pracę z Delphi, to jest to procesor 450 MHz oraz 256 MB RAM.
Powyższe dane dotyczą wersji Delphi 2005 Architect.
Instalacja
Instalacja Delphi jest prostym procesem, polegającym na uruchomieniu specjalnego instalatora, który skopiuje oraz skonfiguruje odpowiednie pliki na dysku komputera. Należy przygotować sobie klucz dostarczony wraz ze środowiskiem Delphi — będzie potrzebny do uruchomienia programu.
Po instalacji w menu Start zostanie utworzona grupa Borland Delphi 2005, w której znajduje się skrót umożliwiający uruchomienie Delphi.
Aby uzyskać klucz, trzeba zarejestrować się na stronie http://borland.com. Po pomyślnym procesie rejestracji klucz wraz z instrukcją jest przesyłany na wskazany adres e-mail.
Jak się uczyć?
Jak się uczyć programowania? Każdy ma inne techniki, mniej lub bardziej skuteczne. Czytelnik wziął tę książkę do ręki zapewne dlatego, że interesuje się przedstawioną w niej tematyką i dzięki temu nauka będzie przychodziła mu łatwiej. Gorzej, jeżeli Czytelnik musi nauczyć się programowania w Delphi, ponieważ tak nakazał mu szef — w takich przypadkach nauka będzie trudniejsza. To naturalne — oswojenie się z tym, co się lubi, co sprawia przyjemność, jest w gruncie rzeczy łatwe. Tak samo jest z Delphi. Jeżeli Czytelnik interesuje się programowaniem, to nauka tego języka będzie przyjemnym doświadczeniem.
Nie ucz się na pamięć!
Na pewno nie należy wkuwać wszystkiego i lepiej nie starać się zapamiętać całego prezentowanego tu materiału — w każdym momencie można przecież cofnąć się do poprzedniego rozdziału!
Początkowe trudności
Jeżeli Czytelnik jest naprawdę początkujący w tej dziedzinie, to początki mogą być trudne. Nie mówię tego, aby kogokolwiek zniechęcać, lecz raczej aby pocieszyć — tak jest w wielu przypadkach, więc nie ma się czemu dziwić. Z czasem wiele kwestii stanie się bardziej czytelnych i łatwiejszych. Może się bowiem zdarzyć, iż na początku tej książki będę wspominał o sprawach, które zostaną omówione dopiero w dalszych rozdziałach (aczkolwiek będę się starał unikać niezrozumiałych pojęć), tak więc nie należy się przejmować, jeśli coś wydaje się niejasne — w dalszej części książki znajdą się odpowiedzi.
Pomoc systemowa
Zawsze można skorzystać z systemu pomocy! Najważniejszym klawiszem skrótu jest F1, który powoduje uruchomienie pomocy Delphi. Niestety, pomoc jest w całości napisana w języku angielskim, tak więc jest wymagana przynajmniej podstawowa umiejętność czytania w tym języku.
Pomoc w Delphi jest głównym źródłem wiedzy na temat języka Delphi oraz platformy .NET.
Praktyka
Praktyka czyni mistrza! Każdy na pewno nieraz słyszał to przysłowie. Warto stosować się do niego. Po zapoznaniu się z jakąś nową funkcją warto sprawdzić ich działanie w praktyce — jest to dobry sposób na opanowanie nowego materiału.
FAQ
Jako autor tej publikacji w końcowej części każdego rozdziału zamieściłem FAQ, czyli listę najczęstszych pytań i odpowiedzi dotyczących programowania w Delphi, ale nie tylko. Pełny FAQ (zawierający ponad 300 wskazówek) można znaleźć pod adresem: FAQ. Zaprezentowano tam nie tylko pytania i odpowiedzi dotyczące zagadnień technicznych, lecz również te związane z wątpliwościami, które mogą pojawiać się na pewnym etapie nauki.
Testy
W końcowej części każdego rozdziału uwzględniłem również krótki quiz dotyczący wiedzy zawartej w danym rozdziale. Jeżeli Czytelnik zechce sprawdzić, co zapamiętał z lektury — może spróbować prawidłowo odpowiedzieć na pytania. Prawidłowe odpowiedzi znajdują się na końcu książki. Warto zaznaczyć, że w każdym pytaniu może być jedna lub więcej prawidłowych odpowiedzi!
Podstawowe okna Delphi
Po zainstalowaniu Delphi, należałoby spróbować go uruchomić i zapoznać się z kilkoma podstawowymi oknami. Pozwoli to na sprawniejsze poruszanie się w gąszczu opcji i pasków i zaznajomi z podstawowymi opcjami. Delphi można uruchomić, wybierając z menu Start pozycję Programy => Borland Delphi 2005, a następnie Delphi 2005.
Na pierwszy rzut oka Delphi składa się z kilku okien i kontrolek. Nieraz można spotkać się z określeniem zintegrowane środowisko IDE. Kilka najbliższych stron zostanie poświęconych omówieniu podstawowych elementów IDE. Kolejne możliwości środowiska Delphi Czytelnik będzie poznawał w miarę lektury poszczególnych stron tej książki. Więcej informacji o opcjach IDE znajduje się w rozdziale 4.
Na rysunku 1.1 przedstawiono wygląd Delphi zaraz po uruchomieniu programu. Jak widać, dostępnych jest wiele okien, przycisków i pasków menu, które mogą wywołać poczucie zagubienia u osoby, która po raz pierwszy widzi Delphi.
Rysunek 1.1. Podstawowe elementy zintegrowanego środowiska Delphi 2005
Użytkownicy, którzy wcześniej korzystali ze starszych wersji Delphi, na pewno dostrzegą różnicę. Przede wszystkim zmieniono okno Welcome Page, które teraz zawiera więcej informacji o produktach firmy Borland oraz odnośniki do artykułów technicznych. W standardowym widoku pojawiło się również okno Structure.
Welcome Page
Centralne okno na środku po raz pierwszy pojawiło się Delphi 8 — nie jest to nic innego jak okno wyświetlające zawartość startowej strony WWW. Na tej stronie znajdują się odnośniki do produktów Borlanda oraz do pomocy.
Ciekawostką jest także wyświetlanie łączy do projektów, nad którymi ostatnio pracowano (rysunek 1.2) — kliknięcie spowoduje otwarcie projektu.
Rysunek 1.2. Lista ostatnio otwieranych projektów
Okno przeglądarki można zamknąć, klikając małą ikonę z krzyżykiem obok tytułu okna.
Okno główne
Po pozamykaniu wszystkich elementów położonych w obrębie głównego okna Delphi, nasze środowisko programistyczne wygląda tak jak na rysunku 1.3.
Rysunek 1.3. Okno główne Delphi
Jest to swoiste centrum dowodzenia — znajdują się tu najważniejsze paski narzędzi oraz typowe dla aplikacji Windows paski menu.
Menu
Jak prawie każda aplikacja Windows, także Delphi ma menu główne. W menu tym są dostępne podstawowe opcje, jak otwieranie, zapis i zamykanie projektu. Oprócz takich typowych pozycji znajdują się tu także polecenia związane wyłącznie z Delphi, na przykład umożliwiające kompilację projektu, manipulowanie nim, a także wiele innych przycisków.
Paski narzędziowe
W głównym oknie Delphi znajduje się dwanaście pasków narzędziowych, lecz większość z nich pozostaje ukryta. Po wyświetleniu paski narzędziowe można swobodnie przeciągać po ekranie (rysunek 1.4).
Rysunek 1.4. Paski narzędziowe Delphi
Wszystkie dostępne na tych paskach przyciski są skrótami do poleceń znajdujących się w menu Delphi. Dzięki temu łatwiej jest do nich dotrzeć — wystarczy jedno kliknięcie zamiast przedzierania się przez gąszcz pozycji menu.
Ze wszystkimi przyciskami na paskach są skojarzone podpowiedzi (ang. tooltips). Wystarczy umieścić wskaźnik myszy nad ikoną, aby ujrzeć dymek z informacją o danej funkcji oraz przypisanym jej skrócie klawiszowym.
Projektant może decydować o wyświetlaniu konkretnych pasków narzędziowych oraz o dymkach podpowiedzi. Wystarczy w tym celu wybrać z menu View pozycję Toolbars => Customize.
Projektant formularzy
Nadszedł już czas na utworzenie nowego projektu, gdyż nie można omawiać projektanta formularzy bez otwarcia nowego projektu.
Zróbmy więc tak: z menu File wybierzemy New => Windows Forms Application — Delphi for .NET. W tym momencie wygląd Delphi ulegnie drobnej zmianie — okna przybiorą inny wygląd, a na środku pojawi się nowe okno z charakterystyczną siatką.
To szare okno z nałożoną siatką nazywa się projektantem formularzy i jest ono w rzeczywistości podglądem budowanego programu. Taka jest zasada projektowania w Delphi: podczas pracy można cały czas obserwować, jak tworzona aplikacja będzie wyglądała podczas działania.
Warto zauważyć, że okno Welcome Page, o którym wspomniałem wcześniej, nadal jest wyświetlane, tyle że na innej zakładce. W rzeczywistości jest to cecha dodana w Delphi 8 — projektant formularzy został tak rozbudowany, iż umożliwia zarówno pracę nad formularzem, jak i przeglądanie stron WWW.
Paleta narzędzi
Niezwykle ważnymi elementami w Delphi są komponenty obsługiwane za pomocą palety narzędzi (ang. tool palette).
Komponenty to elementy, dzięki którym termin RAD nabiera rzeczywistego znaczenia. Można porównać je do klocków, za pomocą których już w początkowej fazie projektu możemy utworzyć interfejs aplikacji.
Komponenty są tym, co przyciągnęło do Delphi wielu użytkowników. Programowanie w Delphi nie opiera się jedynie na wpisywaniu poleceń — wykonując proste czynności, można w swoim programie umieścić przyciski, kontrolki edycyjne, menu i inne typowe obiekty Windows. Wszystko to bez wprowadzania nawet jednego wiersza kodu!
Paleta narzędzi (rysunek 1.5) to okno podzielone na szereg kategorii uporządkowanych tematycznie. Wśród nich są kontrolki do obsługi baz danych, kontrolki wizualne itp.
Rysunek 1.5. Paleta narzędzi
Wygląd palety narzędzi uległ zmianie w porównaniu do poprzedniej wersji Delphi. Teraz sprawia wrażenie bardziej surowego.
Komponenty są często nazywane po prostu kontrolkami w kontekście komponentów wizualnych (np. przycisk). Takiej terminologii będę używał także w tej książce.
Inspektor obiektów
Inspektor obiektów został pokazany na rysunku 1.6.
Rysunek 1.6. Inspektor obiektów
Główny człon inspektora obiektów stanowi lista rozwijalna — jest to lista wszystkich obiektów (komponentów) umieszczonych w obszarze formularza. Po wybraniu danego elementu z tej listy w oknie inspektora obiektów pojawią się różne opcje określające zachowanie oraz wygląd danego komponentu lub nawet całego formularza!
Inspektor obiektów dzieli się na dwie zakładki: Properties (właściwości) oraz Events (zdarzenia).
Zakładka Properties
Po lewej stronie zakładki Properties znajdują się nazwy tzw. właściwości, którym można nadawać wartości, wpisując je po prawej stronie.
Właściwość określa sposób zachowania się oraz wygląd komponentu. Przykładowo, właściwość Color
określa barwę danego obiektu.
Wykonajmy małe ćwiczenie, obrazujące znaczenie właściwości obiektów (komponentów) oraz formularza.
Najpierw należy odszukać w inspektorze obiektów pozycję Text
. Zaznaczenie danej właściwości odbywa się poprzez umieszczenie wskaźnika myszy nad wybraną nazwą oraz pojedyncze kliknięcie. Wówczas pole nazwy danej właściwości zmieni kolor tła na szary, natomiast pole z prawej strony stanie się aktywne. Zamiast standardowego napisu WinForm1
można wpisać w tym miejscu Moja pierwsza aplikacja
. Należy zwrócić uwagę, że zmiana wartości zostaje odzwierciedlona także w wyglądzie formularza — napis na pasku tytułowym formularza zmienił się zgodnie z tym, co wpisano w inspektorze obiektów (rysunek 1.7)!
Rysunek 1.7. Napis na pasku tytułowym formularza
W tym momencie Czytelnik poznał znaczenie jednej właściwości — Text
. Od tej pory będzie już wiadomo, że ta właściwość określa tytuł danej kontrolki.
Zakładka Events
Zdarzenia to całkiem inna sprawa. Po zaznaczeniu tej zakładki w inspektorze obiektów pojawi się lista pól — te pola opisują zdarzenia.
Zdarzenia określają sposób reakcji poszczególnych komponentów na zaistniałą zmianę stanu (na przykład kliknięcie danego obiektu czy poruszanie wskaźnikiem myszy).
Zdarzeniami zajmiemy się w dalszej części książki, gdyż ich obsługa wymaga wpisywania kodu źródłowego, a na to przyjdzie czas nieco później.
Menedżer projektu
Menedżer projektu (ang. Project Manager) to okno, które standardowo we wcześniejszych wersjach było ukryte — teraz znajduje się u góry po prawej stronie (rysunek 1.8).
Rysunek 1.8. Menedżer projektu
Standardowo to okno jest podzielone w Delphi 2005 na trzy zakładki: Project Manager (główna zakładka), Model View oraz Data Explorer. Dzięki temu praktycznie w jednym oknie są zawarte niejako trzy.
Project Manager
Generalnie okno Project Manager służy do zarządzania projektem, wyświetlania okien wykorzystywanych w projekcie oraz bibliotek, z jakich korzysta. Jest to o tyle korzystne, że Delphi umożliwia jednoczesną pracę nad wieloma projektami i właśnie do tego najbardziej przydatny jest menedżer projektu.
Model View
Okno Model View służy do wyświetlania hierarchicznej struktury projektu — formularzy, funkcji użytych w projekcie itp.
Okno Model View jest niejako związane z ECO (Borland Enterprise Core Object), ale o tym powiemy sobie przy innej okazji.
Okno Model View zostało dodane w wersji Delphi 8.
Data Explorer
Pozycja Data Explorer została dołączona po raz pierwszy w Delphi 8. Okno to jest związane z bazami danych — umożliwia połączenie i modyfikacje połączenia z bazami danych — o tym będziemy mówić w II części książki.
Edytor kodu
Okno edytora kodu jest miejscem, w którym dokonuje się faktycznego wpisywania szeregu poleceń, dzięki którym program działa zgodnie z oczekiwaniami swojego twórcy. Część kodu jest wstawiana do edytora automatycznie — część trzeba wpisywać samodzielnie. Delphi jest wspaniałym środowiskiem, lecz programowanie nie opiera się jedynie na budowaniu aplikacji.
Aby otworzyć okno edytora kodu, należy kliknąć zakładkę Code w projektancie formularzy. Efektem jest wyświetlenie dotychczasowej zawartości kodu źródłowego (rysunek 1.9).
Rysunek 1.9. Edytor kodu
Schemat kolorowania składni, jaki oferuje Delphi, nie jest jedyną dostępną możliwością. Ustawienie własnego schematu wymaga wybrania z menu polecenia Tools => Options i zaznaczenia zakładki Editor Options => Color.
Staraj się zapamiętywać skróty klawiaturowe! Dzięki temu można zaoszczędzić wiele czasu. Warto znać przynajmniej te podstawowe, jak np. F12, który powoduje przełączanie się pomiędzy edytorem kodu a projektantem formularzy.
Okno komunikatów
Domyślnie okno komunikatów pozostaje zawsze ukryte. Podczas próby kompilacji programu okno to może zawierać informację o błędach i ostrzeżeniach (jeżeli takowe wystąpią). Okno komunikatów wywołuje się przez kliknięcie prawym przyciskiem myszy w obszarze edytora kodu i wybranie z menu kontekstowego pozycji Message View. Okno komunikatów przedstawiono na rysunku 1.10.
Rysunek 1.10. Okno komunikatów
W przypadku wystąpienia błędu w kodzie, dwukrotne kliknięcie linii z opisem błędu spowoduje wyświetlenie wiersza kodu, w którym został znaleziony błąd.
Od wersji 7. okno Message View może być podzielone na kilka zakładek.
Ukrywanie okna
Zarówno inspektor obiektów, okno menedżera projektów, jak i nawet okno pomocy Delphi posiada na pasku tytułowym, obok przycisku umożliwiającego zamknięcie danego okna, małą ikonę. Naciśnięcie tej ikony umożliwia automatycznie ukrywanie danego okna, gdy nie jest ono potrzebne. Jest to dość wygodna funkcja wprowadzona w Delphi 8 — jeżeli nie korzystamy z okna, to po co ma zajmować miejsce na ekranie. Lepiej niech zostanie zwinięte. Wówczas widać tylko mały, wąski fragment tego okna — umieszczenie nad nim wskaźnika myszy powoduje wyświetlenie danego obiektu.
Pierwszy projekt
Zapewne łatwo się zorientować, że programowanie w Delphi polega po części na projektowaniu wizualnym z dostępnych „klocków”. Dzięki temu tworzenie interfejsu aplikacji trwa dosłownie chwilkę.
Pierwsze ćwiczenie będzie polegało na umieszczeniu w oknie formularza komponentu — etykiety tekstowej. Nie będziemy przy tym edytować żadnego kodu.
Tworzenie projektu
Czynności związane z tworzeniem projektu opiszę krok po kroku — nikt nie powinien mieć trudności z utworzeniem takiej aplikacji.
#Z menu File wybierz New, a następnie Windows Forms — Delphi for .NET.
#Na liście palety narzędzi odszukaj pozycję Label
.
#Kliknij pozycję Label
.
#Przesuń wskaźnik myszy nad obszar formularza — wskaźnik powinien zmienić swój kształt.
#Kliknij raz w obrębie formularza, co spowoduje umieszczenie etykiety w oknie.
W tym momencie na formularzu znalazł się pierwszy komponent. Ów obiekt można swobodnie przesuwać oraz zmieniać jego rozmiar. Zaraz po umieszczeniu komponentu na formularzu powinien być on zaznaczony. Właściwości wyświetlane w inspektorze obiektów są zależne od zaznaczonego obiektu — formularz będzie miał nieco inne właściwości niż zaznaczony komponent Label
.
#Przesuń komponent, tak aby znalazł się mniej więcej na środku formularza.
#Zaznacz w inspektorze obiektów właściwość Text
i zmień ją na Jestem komponentem
.
Możliwe, że tekst, który wpisałeś, nie zmieścił się całkowicie w obszarze kontrolki — w takim przypadku możesz ją dowolnie zwężać i rozciągać, chwytając myszą rogi komponentu.
Odznaczenie komponentu następuje po kliknięciu myszą poza obszarem komponentu, czyli np. w obrębie formularza.
Zapisywanie projektu
Moja rada jest następująca: każdy projekt należy zapisywać w osobnym folderze. Delphi nie generuje jednego pliku projektu — jest ich zawsze kilka. Gdyby Czytelnik przechowywał kilka projektów w jednym katalogu, łatwo mógłby się pogubić. Proponuję utworzenie na dysku C: folderu Projekty, w którym można zakładać w miarę potrzeby kolejne podkatalogi.
Aby zapisać projekt, z menu File wybiera się polecenie Save All. Dzięki temu Delphi zapisze cały projekt. Na samym początku trzeba podać nazwę pliku formularza — przykładowo, WinForm
(Delphi automatycznie doda rozszerzenie *.pas). Następnie określa się nazwę projektu — wpisz np. HelloWorld
.
Nazwa projektu nie może zawierać spacji lub rozpoczynać się od cyfry. Ta sama uwaga dotyczy nazwy dla pliku formularza.
Uruchamianie programu
Jak już wspominałem wcześniej w tym rozdziale, podczas projektowania aplikacji można podglądać jej ostateczną postać, jaką przybierze podczas działania. Można popatrzeć na okno projektanta formularzy — tak będzie wyglądał program zaraz po uruchomieniu! Jedyną różnicą jest to, że zniknie siatka pomocnicza.
Uruchomienie projektu następuje po wybraniu z menu Run polecenia Run lub po naciśnięciu przycisku na pasku narzędziowym. Radzę jednak zapamiętać skrót klawiaturowy — F9. Naciśnięcie tego klawisza spowoduje skompilowanie, a następnie uruchomienie danego projektu. Podczas działania programu inspektor obiektów zostaje schowany. Wygląd programu w trakcie działania przedstawiono na rysunku 1.11.
Rysunek 1.11. Program w trakcie działania
Uruchomienie programu może trochę potrwać — szczególnie na słabszych komputerach. Warto być cierpliwym.
Zamykanie programu
Po napatrzeniu się na swoją pierwszą aplikację można ją zamknąć. Czynność tę wykonuje się tak samo jak w przypadku każdej aplikacji Windows — poprzez kliknięcie ikony położonej w prawym górnym rogu okna.
Innym sposobem na zamknięcie programu jest wybranie z menu Run polecenia Program Reset (Ctrl+F2).
Polecenie Program Reset przydaje się bardzo często w przypadku, gdy program nie odpowiada albo „się zawiesił” (wykonuje stale te same czynności, co sprawia, że nigdy nie zostanie zakończony — taka operacja nazywa się zapętleniem).
Otwieranie projektu
Czytelnik powinien rozróżniać pewne pojęcia, takie jak nazwa projektu oraz nazwa formularza. Plik projektu Delphi zawsze jest oznaczony rozszerzeniem nazwy *.bdsproj, dlatego aby otworzyć cały projekt w odpowiednim oknie, trzeba wybrać właśnie plik *.bdsproj lub *.dpr.
Można także otworzyć formularz (rozszerzenie *.pas), ale w tym przypadku będziesz można jedynie go edytować — Delphi nie pozwoli na uruchomienie projektu, do którego należy ten formularz.
Warto byłoby teraz wykonać małe ćwiczenie. Najpierw z menu File należy wybrać polecenie Close All. Spowoduje to zamknięcie całego projektu. Zamknięte zostanie również okno edytora kodu. Jeżeli edytowany projekt nie został wcześniej zapisany, Delphi wyświetli zapytanie, czy nie należy tego zrobić w tej chwili.
Następnie, aby ponownie otworzyć projekt, trzeba z menu File wybrać polecenie Open Project lub kliknąć odpowiednią ikonę na pasku narzędziowym. Potem wybiera się nazwę pliku do otwarcia — HelloWorld.bdsproj
— i klika przycisk Otwórz.
Rezultatem tej operacji będzie otwarcie projektu, a wraz z nim otwarcie formularza, nad którym pracowaliśmy wcześniej.
Kompilacja projektu
Aby sprawdzić, czy wprowadzone właśnie zmiany nie spowodują występowania błędów, nie trzeba uruchamiać projektu — łatwiej go po prostu skompilować. Delphi sprawdza wówczas kod źródłowy i — w przypadku, gdyby zawierał błędy — wyświetli odpowiednie informacje w oknie komunikatów. Kompilacja projektu następuje poprzez wybranie z menu Run polecenia Compile (Ctrl+F9).
Pozycja Information z menu Run wyświetla podsumowanie kompilacji. W tym oknie można sprawdzić, ile linii kodu zawiera projekt oraz jaki jest rozmiar pliku wykonywalnego.
Pliki projektu
Po kompilacji otwartego programu łatwo się przekonać, że w folderze, w którym jest zapisany projekt, znajduje się całkiem sporo plików. Nie wszystkie te pliki są potrzebne. Oznacza to, że ich usunięcie niczego złego nie spowoduje — Delphi odtworzy je przy kolejnej próbie kompilacji projektu. Poniżej przedstawiam pliki, które mogą znaleźć się w katalogu z aplikacją:
- *.pas — pliki źródłowe, w których znajdują się kody źródłowe formularzy i modułów (o modułach opowiem w rozdziale 3.);
- *.pdb — plik zawierający informacje dla debugera;
- *.dcuil — skompilowany plik *.pas. Plik ten nie jest potrzebny — po kolejnej próbie kompilacji Delphi odtworzy go na podstawie kodów źródłowych;
- *.dpr — główny plik projektu, zawierający startowy kod źródłowy;
- *.cfg — konkretne ustawienia kompilatora. Mogą być różne dla każdego projektu, stąd w przypadku, gdy niemożliwe będzie odnalezienie tego pliku, zostaną zastosowane ustawienia domyślne;
- *.bdsproj — główny plik projektu — ustawienia projektu zapisane w języku XML;
- *.res — tzw. plik zasobów: informacje wkompilowane w program wykonywalny — np. ikona dla pliku *.exe.
W domyślnych ustawieniach Delphi jest określone automatyczne tworzenie kopii zapasowych. Pliki takie mają taką samą zawartość jak ich pierwowzory — jedyną różnicą jest obecność znaku tyldy (~) w rozszerzeniu nazwy.
Często kopie zapasowe plików stają się po prostu niepotrzebne. Jeżeli użytkownik zechce wyłączyć tę opcję, wystarczy rozwinąć menu Tools => Options, a następnie zaznaczyć kategorię Editor Options. Na panelu powinna znaleźć się pozycja Create backup file, której zaznaczenie należy usunąć.
Osoby, które wcześniej pracowały na starszych wersjach Delphi, mogą być zaskoczone brakiem pliku *.dfm, który wcześniej zawsze przechowywał informacje o formularzu. Otóż teraz informacje te są zawarte bezpośrednio w kodzie (w pliku *.pas) [#]_
Przydatne odnośniki
Poniżej przedstawiam adresy stron WWW, które zdecydowanie mogą okazać się przydatne. Ich treść nawiązuje do zagadnień opisanych w tym rozdziale:
*http://www.borland.pl — polski oddział firmy Borland,
*http://gcc.gnu.org — strona kompilatora GCC,
*http://perl.org — oficjalna strona Perla,
*http://www.php.net — główna strona projektu PHP,
*http://www.freepascal.org — strona poświęcona Free Pascal Compiler,
*http://www.microsoft.com/net — strona poświęcona technologii .NET,
*http://www.wall.org/~larry — strona Larry’ego Walla,
*http://www.cs.bell-labs.com/who/dmr — strona Dennisa Ritchiego,
*http://www.research.att.com/~bs — strona Bjarne’a Stroustrupa.
Test
- Który spośród wymienionych języków programowania jest językiem interpretowanym?
A. Turbo Pascal,
B. PHP,
C. C++. - Czym jest kompilator?
A. Programem tworzącym kod źródłowy,
B. Programem przekształcającym postać binarną aplikacji do kodu źródłowego,
C. Programem przekształcającym kod źródłowy do postaci wykonywalnej. - Co oznacza pojęcie RAD?
A. Szybkie wykonywanie aplikacji,
B. Szybkie projektowanie aplikacji,
C. Możliwość działania pod kontrolą platformy .NET. - Czy Delphi 2005 może zostać zainstalowane pomimo iż na komputerze nie zainstalowano pakietu .NET Framework?
A. Tak,
B. Nie,
C. Może pod warunkiem zaznaczenia odpowiedniej opcji w konfiguracji. - W pliku o jakim rozszerzeniu są przechowywane kody źródłowe?
A. *.pas,
B. *.dcuil,
C. *.res. - Jaki klawisz umożliwia przełączenie się z edytora kodu do projektanta formularzy?
A. F11,
B. F9,
C. F12. - Do czego służy okno inspektora obiektów?
A. Do zarządzania aplikacją,
B. Do ustawień zachowania komponentów i formularzy,
C. Do zarządzania procesem kompilacji.
FAQ
Co powinienem wybrać: Delphi czy C#?
Wybór odpowiedniego języka programowania od dawna jest tematem wielu dyskusji. Wystarczy zajrzeć do archiwum grup dyskusyjnych, aby się przekonać, że nie ma konkretnej jednoznacznej odpowiedzi.
C# jest nowym językiem programowania, przeznaczonym do programowania na platformę .NET. C# jest językiem stworzonym przez Microsoft i stanowi połączenie języka Java oraz C++. Według wielu ekspertów w ciągu najbliższych lat, w miarę rosnącej popularności .NET, język C# będzie jednym z najczęściej używanych na świecie.
Delphi jest językiem, który wyrobił sobie dobrą opinię wśród programistów i jest w tej chwili jednym z najpopularniejszych na świecie. Umożliwia szybkie projektowanie aplikacji, równie szybkie co w C#, gdyż oba służą do tworzenia aplikacji pod .NET (za pomocą Delphi można dodatkowo tworzyć standardowe aplikacje Windows). W Delphi dodatkowo są dostępne biblioteki VCL, VCL.NET oraz Windows Forms, co zapewnia duże pole manewru podczas projektowania aplikacji.
Jeżeli Czytelnik wcześniej programował w C/C++ i chce programować dla .NET, to warto zainteresować się C#. Osoba, której pierwszym językiem był Turbo Pascal, powinna zainstalować na swoim komputerze Delphi. Jeżeli ktoś w ogóle nie miał styczności z programowaniem — doradzam wybór Delphi.
Czym jest biblioteka DLL?
DLL jest skrótem od słów Dynamic Link Library. Biblioteka DLL stanowi fragment skompilowanego programu, lecz nie jest samodzielnym programem! Jest to jedynie plik binarny noszący rozszerzenie dll.
Koncepcją bibliotek DLL był pomysł tworzenia podprogramów. Polegało to na dzieleniu kodu na mniejsze fragmenty i umieszczaniu ich właśnie w bibliotekach DLL. Dzięki temu pewien element kodu, zawarty w jednej bibliotece, może być wykorzystywany w wielu innych programach bez konieczności dublowania kodu.
Minusem wykorzystywania bibliotek DLL niejednokrotnie jest ich niekompatybilność. Otóż często instalowane aplikacje nadpisują biblioteki DLL, wskutek czego powstają różne konflikty mające swoje przyczyny w różnicach w wersjach bibliotek. Czasami także na dysku pozostają nieużywane w ogóle biblioteki DLL, będące pozostałością po rozmaitych aplikacjach, które nie usunęły owych bibliotek. Sytuacja taka jest określana mianem DLL hell (ang. piekło DLL) i została wyeliminowana na platformie .NET.
W systemach typu UNIX także istnieją biblioteki — odpowiedniki plików DLL, które noszą rozszerzenie so.
Czy musze posiadać pakiet .NET Framework SDK?
Tak. W przeciwnym razie nie będzie można uruchomić i normalnie pracować z Delphi 2005. Przypominam, że pakiet .NET Framework można ściągnąć ze strony Microsoftu (http://microsoft.com).
Skąd mogę wiedzieć, czy .NET Framework jest już zainstalowany?
Wystarczy otworzyć okno Panelu sterowania, a następnie wybrać ikonę Dodaj/Usuń programy. Teraz należy sprawdzić, czy na liście zainstalowanych aplikacji znajduje się .NET Framework SDK 1.1.
W przypadku systemu Windows 2003 pakiet .NET Framework jest instalowany automatycznie wraz z systemem.
Czy istnieje jakiś alternatywny kompilator Delphi?
Delphi jest produktem komercyjnym, dostępnym jedynie dla systemu Windows (pomijam tu produkt Kyliks, który jest kompilatorem podobnym do Delphi, lecz działającym w systemie Linux). Owszem, istnieje darmowy klon, oparty na licencji GPL, lecz nie oferuje on wszystkich funkcji dostępnych w Delphi. Zatem aplikacje, które kompiluje Delphi, niekoniecznie mogą być kompilowane przez Free Pascal, bo taką nosi nazwę ów program. Biblioteka klas, która emuluje Delphi, nosi nazwę Lazarus i jest dostępna pod adresem: http://www.lazarus.freepascal.org/.
Warto zwrócić uwagę, że kompilator Free Pascal jest kompilatorem kompilującym do pliku wykonywalnego zgodnego z Windows 32, nie jest więc przystosowany do .NET.
Przykładowa aplikacja, którą utworzyłem, nie działa na komputerze kolegi. Dlaczego?
W tym rozdziale zaprezentowałem sposób tworzenia prostej aplikacji Windows Forms, która działa pod kontrolą platformy .NET. Taka aplikacja może być uruchomiona jedynie pod warunkiem, iż na komputerze znajduje się środowisko .NET Framework. Istnieje także możliwość tworzenia aplikacji, które nie będą wymagały środowiska .NET, lecz tym zajmiemy się w dalszej części książki.
O platformie .NET, dowiesz się więcej po lekturze rozdziału 2.
Podsumowanie
Podsumujmy naszą dotychczasową wiedzę na temat programowania. W tym rozdziale jedynie nakreśliłem podstawowe kwestie programowania, lecz to tylko teoria. Tworzeniem prawdziwych projektów w Delphi zajmiemy się w kolejnych rozdziałach.
Na samym początku wymieniłem i pokrótce opisałem kilka popularnych obecnie języków programowania. Nie jest to wiedza, którą trzeba posiadać, ale jedynie ciekawostka. Później zaprezentowałem kilka podstawowych okien środowiska Delphi oraz pokazałem, w jaki sposób można utworzyć swoją pierwszą aplikację. Co prawda, nie wykonywała ona żadnego szczególnego zadania, ale już wkrótce zaczniemy pisać poważniejsze, bardziej zaawansowane programy.
Po przeczytaniu tego rozdziału Czytelnik powinien wiedzieć, czym jest kod źródłowy czy kompilator. Te pojęcia będą bowiem przewijać się w trakcie dalszej lektury. Należy także wiedzieć, w jaki sposób otwierać, zamykać czy tworzyć nowe projekty. Chciałbym, aby każdy na tym etapie zdawał sobie sprawę z istnienia kilku typów aplikacji: aplikacji działających pod kontrolą bazy Win16, Win32 oraz .NET. O tym jednak opowiem w kolejnym rozdziale.
.. [#] W rzeczywistości język ten nazywa się Assembler, lecz jego spolszczoną nazwą jest Asembler i tej będę używał w niniejszej książce.
.. [#] Tabela sporządzona na podstawie informacji udostępnionych przez producenta.
.. [#] Jedynie w przypadku projektu Windows Forms VCL.NET nadal posiada plik z ustawieniami formularza. Więcej informacji na ten temat zawiera rozdział 4.