Praktyczny kurs programowania w Delphi.pdf

(111 KB) Pobierz
3745013 UNPDF
Praktyczny kurs programowania w Delphi
na przykładzie wygaszacza ekranu Windows
Ryszard Paweł Kostecki
rpkost@fuw.edu.pl
www.rysieq.prv.pl
17 czerwca 2002
Motto:
Nasz jezyk, tak jak i nasza poezja, wywodzi sie z arytmetycznego, binarnego
funkcjonowania naszego mózgu. Klasyfikujemy na tak, na nie, na pozytywnie,
na negatywnie. (...) Mój jezyk dowodzi jedynie powolnosci wizji swiata zre-
dukowanej do binarnego punktu widzenia. Ta niewystarczalnosc jezyka jest
oczywista i dokuczliwa. Ale cóz mozna powiedziec o niewystarczalnosci in-
teligencji binarnej jako takiej? Wewnetrzna egzystencja, własciwa esencja
spraw wymyka jej sie. Moze odkryc, ze swiatło jest równoczesnie ci agłe i
nieci agłe, ze cz asteczka benzenu ustala miedzy swoimi szescioma atomami
wi azania podwójne, niemniej wzajemnie sie wykluczaj ace; ona uznaje to wszys-
tko, ale nie pojmuje, jej własna struktura nie jest w stanie przyswoic sobie
rzeczywistosci złozonych struktur, które bada...
Louis Pauwels & Jacques Bergier, Le matin des magiciens
Streszczenie
Praca ta jest praktycznym kursem jezyka i srodowiska programistycznego Delphi. Kurs ten polega na dokład-
nym omówieniu konstrukcji prostego wygaszacza ekranu napisanego w Delphi. W efektywnej lekturze tej pracy
przydatna bedzie znajomosc jakiegos jezyka programowania wyzszego poziomu.
Abstract
This paper is a practical course of the Delphi language and programming environment. This course proceeds
comprehensive discussion of simple screensaver written in Delphi. For the effecive reading of this paper, some
knowledge in any high level programming language will be usefull.
poprawki: 11 lutego 2003, 3 sierpnia 2003, 1 czerwca 2004, 13 listopada 2004.
3745013.004.png
2
Praktyczny kurs programowania w Delphi
Wstep
Klasyczne programowanie polegało kiedys na otworzeniu edytora i linia po linii wklepywaniu tego co ma kom-
puter czynic. W tych zamierzchłych czasach pisano bardzo czesto w kodzie maszynowym lub w assemblerze.
Był to jezyk bardzo nieprzejrzysty i zalezny scisle od hardware’u (np. programy napisane na procesory Mo-
toroli nie dawały sie uruchomic na procesorach Intela i vice versa). Jednakze wzrost mocy obliczeniowej komput-
erów umozliwił powszechne pisanie programów w jezykach wysokiego poziomu, znacznie bardziej intuicyjnych,
oraz niezaleznych od platformy sprzetowej. Sposród rozmaitych jezyków programowania wysokiego poziomu
najbardziej popularnymi i wszechstronnymi okazały sie C/C++ i Pascal.
Współczesnie najbardziej popularnymi s a obiektowo zorientowane jezyki C++, Delphi (nastepca Object Pas-
cala), oraz Java. Programowanie polega dzis na zintegrowanym współdziałaniu róznych srodowisk i standardów,
zarówno programistycznych, jak i uzytkownika. Jest to tzw. integrated development . Współczesnie programuje sie
głównie „składaj ac z klocków” – ł acz ac ze sob a rozmaite moduły, klasy, obiekty, nie interesuj ac sie przy tym ich
wewnetrznymi zachowaniami, a jedynie wejsciem/wyjsciem. Jest to tzw. OOP ( object oriented programming ).
Programista nie zajmuje sie tym, jak obiekty maj a cos zrobic, ale co maj a zrobic. Funkcjonowanie programu
nie polega na realizacji kolejnych linii kodu, tylko na reakcjach obiektów na zdarzenia generowane przez inne
obiekty. Jest to tzw. event handling . Powszechny stał sie równiez wymóg łatwosci modyfikacji, rozszerzalnosci,
przenosnosci i ponownej uzywalnosci kodu ( extensibility, reusability , ...). Delphi jest powszechnie uzytkowanym
srodowiskiem programistycznym spełniaj acym te cechy. Kurs ten, po krótkim wstepie teoretycznym, bedzie prak-
tyczn a nauk a srodowiska i jezyka Delphi na przykładzie konstrukcji wygaszacza ekranu.
Spis tresci
1 Programowanie w Delphi
3
1.1 VCL: klucz do programowania wizualnego i projektowania w stylu drag-and-drop . . . . . . . . .
3
1.2 Teoria programowania w Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2 Praktyczna realizacja: program SCRSAV 5
2.1 Specyfikacja programu wygaszacza ekranu w systemie Windows . . . . . . . . . . . . . . . . . . 5
2.2 Plik scrsav.dpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Unit1.pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Unit2.pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5 Unit3.pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6 Pliki *.dfm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.7 Plik scrsav.ini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.8 Plik scrsav.res . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3745013.005.png
 
Praktyczny kurs programowania w Delphi
3
1 Programowanie w Delphi
1.1 VCL: klucz do programowania wizualnego i projektowania w stylu drag-and-drop
Rysunek 1: Paleta komponentów.
Programowanie w Delphi opiera sie na bibliotece wizualnych komponentów VCL (Visual Component Library).
Komponenty s a to klocki, których programisci uzywaj a do stworzenia interfejsu uzytkownika oraz oprogramowa-
nia niektórych sposród niewizualnych własciwosci aplikacji. Dla tworz acego aplikacje programisty komponent
jest głównie obiektem, którego przeci aga sie myszk a z palety komponentów i umieszcza na formie (form a nazywa
sie programistyczny szkic okienka programu). Nastepnie, juz po umieszczeniu komponentu na formie, mozna ma-
nipulowac jego własciwosciami oraz oprogramowywac specyfike zachowa n komponentu na rozmaite zdarzenia.
Niektóre komponenty reaguj a na zdarzenia systemu (np. zegar czasu rzeczywistego TTimer) inne zas pełni a role
„naczy n posrednicz acych” - wlewa sie do nich pewne zdarzenia, a one generuj a inne... VCL zawiera w sobie kom-
ponenty w pełni obsługuj ace wszystkie elementy interfejsu uzytkownika Windows: drzewa, paski narzedzi, menu,
paski postepu, edytorki, itp., jak równiez wiele innych dodatkowych komponentów. Te dodatkowe komponenty
uzupełniaj a istniej acy interfejs uzytkownika, obsługe danych, zdarze n czy tez narzedzi multimedialnych, wszys-
tko w celu przyspieszenia procesu produkcji aplikacji. Tworzenie aplikacji zachodzi wiec poprzez proste przeci a-
ganie komponentów z palety komponentów (Visual Component Palette) na obszar projektowania okienka, oraz
ustawianie ich własciwosci w inspektorze obiektów (Object Inspector). Kod obsługi zdarzenia jest generowany au-
tomatycznie, oszczedzaj ac czasu programiscie, jakkolwiek ten ma pełny dostep do niego i moze go modyfikowac
wedle potrzeb.
Rysunek 2: Widok okien Delphi.
1.2 Teoria programowania w Delphi
Windows jest wielozadaniowym systemem okienkowym, w którym centraln a role pełni reagowanie i zarz adzanie
zdarzeniami, generowanymi przez wiele procesów naraz. Dlatego tez centralnym pojeciem w programowaniu
3745013.006.png
 
4
Praktyczny kurs programowania w Delphi
Rysunek 3: Komponowanie zabudowy okienka (formy).
Windowsowym jest własnie zdarzenie. W ogólnosci program nie okresla, jakie bed a i mog a byc nastepne czyn-
nosci uzytkownika. Program musi byc przygotowany na rozmaite jego zachowania.
Programowanie w Delphi to głównie programowanie oparte na bibliotece VCL, czyli Visual Component Library.
Biblioteka ta oparta jest na modelu interakcji pomiedzy własciwosciami (ang. properties), metodami (ang. meth-
ods), oraz zdarzeniami (ang. events). Programowanie w VCL polega w duzym stopniu na kodowaniu wzajemnych
interakcji pomiedzy komponentami: kazdy z nich ma jakies własciwosci, metody, oraz zbiór reakcji na zdarzenia.
Najprostszym przykładem komponentu jest komponent TButton. Zawiera on w sobie cał a obsługe tego, co uzyt-
kownik widzi jako przycisk. W tym: połozenie przycisku w okienku, jego rozmiar, napis na nim (własciwosci),
czy tez opis reakcji na klikniecie na niego (metody/zdarzenia).
Jednym z podstawowych komponentów VCL jest komponent TForm, czyli tzw. forma. Forma jest komponentem
obsługuj acym okienko windowsowe, wraz ze wszystkim co sie na nim znajduje (w tym z innymi komponentami).
Przy czym nie tworzy sie obiektów samej klasy TForm (jest to tak zwana klasa abstrakcyjna), tylko wpierw
tworzy sie od niej konkretne klasy pochodne (np. TForm1 = TForm zawieraj aca TButton 1 ), a nastepnie korzysta
sie z konkretnych obiektów tych klas (w tym przykładzie obiektem klasy TForm1 jest Form1).
W Delphi przyjmuje sie, ze kazda forma (reprezentuj aca okienko) ma swój odrebny unit, oraz, co za tym idzie,
plik .pas w którym zawarty jest jej interfejs (ang. interface) i implementacja. Dane dotycz ace szczegółowych
własciwosci kazdego z komponentów nalez acych do formy zgromadzone s a w pliku .dfm (= Delphi File Module).
Prócz tego kazdy program napisany w Delphi ma swój plik projektu (o rozszerzeniu .dpr = Delphi PRoject), w
którym jest zawarta informacja zbiorcza o unitach wchodz acych w skład programu, oraz "sekwencja rozruchowo-
uruchomieniowa" dla programu. Dodatkowe dane dla programu, takie jak np. ikony lub kursory znajduj a sie w
pliku .res (= RESource). Zatem, przykładowo, dla programu zawieraj acego 3 formy bedziemy mieli (przynajm-
niej) nastepuj ace pliki:
program.dpr, program.res
unit1.pas, unit1.dfm
unit2.pas, unit2.dfm
unit3.pas, unit3.dfm
Zas struktura logiczna programu bedzie (zgrubsza) nastepuj aca:
1 a scislej: zawieraj aca TButton1, bowiem TButton (jak zreszt a wiele wsród widocznych komponentów VCL) to równiez klasa abstrakcyjna
3745013.001.png 3745013.002.png
Praktyczny kurs programowania w Delphi
5
(klasa abstrakcyjna)TForm
> (klasa)TForm1
> (obiekt)Form1 zdefiniowany w pliku unit1.pas
i dookreslony w pliku unit1.dfm
> (klasa)TForm2
> (obiekt)Form2 zdefiniowany w pliku unit2.pas
i dookreslony w pliku unit2.dfm
> (klasa)TForm3
> (obiekt)Form3 zdefiniowany w pliku unit3.pas
i dookreslony w pliku unit3.dfm
2 Praktyczna realizacja: program SCRSAV
Ponizej przedstawie szczegółowe omówienie, linijka po linijce, zawartosci wszystkich plików przykładowego
prostego programu pod Windows, jakim jest wygaszacz ekranu. W ten sposób, poprzez nauke na konkretnym
przykładzie, mozna w sposób bodajze najprostszy zrozumiec znaczenie podstawowych i kluczowych elementów
w programowaniu w Delphi. Poniewaz znacznie powszechniejsza jest metoda uczenia poprzez wizualne projek-
towanie form, a dopiero pózniej przypisywanie obsługi zdarze n poszczególnym obiektom, skupie sie tutaj na
analizie kodu zródłowego napisanego w Delphi, nie zas na instruktazu komponowania interfejsu (zwłaszcza iz to
ostatnie jest banalne).
2.1 Specyfikacja programu wygaszacza ekranu w systemie Windows
Wygaszacz ekranu jest aplikacj a systemu Windows o rozszerzeniu .scr, posiadaj ac a swój plik konfiguracji o rozsz-
erzeniu .ini. Pliki .scr i .ini umieszcza sie w głównym katalogu Windows. Dostep do takich opcji wygaszacza
jak ustawienie hasła, lub ustawienie konfiguracji realizuje sie poprzez uruchomienie programu z odpowiednimi
parametrami (Windows robi to automatycznie): ’/a’, ’/c’, lub ’/s’.
2.2 Plik scrsav.dpr
Jest to główny plik programu. Pierwsza linijka programu zawiera słowo kluczowe ’program’ oraz nazwe pro-
gramu. W tym przypadku jest to nazwa ’scrsav’.
program scrsav;
Ponizej w pliku znajduje sie spis wszystkich unitów wykorzystywanych przez program wraz z okresleniem plików
połozenia dla niestandardowych unitów. W tym miejscu wykorzystuje sie cztery unity: Forms (standardowy), oraz
Unit1, Unit2 i Unit3. W nawiasach klamrowych jako komentarz została podana przyczyna wł aczenia tych unitów.
uses
Forms,
Unit1 in ’Unit1.pas’ {Form1},
Unit2 in ’Unit2.pas’ {Form2},
Unit3 in ’Unit3.pas’ {Form3};
3745013.003.png
 
Zgłoś jeśli naruszono regulamin