Delphi 2005. Kompendium programisty

27
Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: [email protected] PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ IDZ DO IDZ DO ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG KATALOG KSI¥¯EK KATALOG KSI¥¯EK TWÓJ KOSZYK TWÓJ KOSZYK CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW CENNIK ZAMÓW CENNI K CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE SPIS TRECI SPIS TRECI DODAJ DO KOSZYKA DODAJ DO KOSZYKA KATALOG ONLINE KATALOG ONLINE Delphi 2005. Kompendium programisty Autor: Adam Boduch ISBN: 83-7361-780-9 Format: B5, stron: 1048 Nowa wersja rodowiska programistycznego Delphi to kolejne nowoci — pe³na integracja zarówno z platform¹ .NET, jak i Win32, nowe technologie tworzenia aplikacji, nowe komponenty i mo¿liwoæ stosowania nie tylko jêzyka Delphi, ale równie¿ C#. Za pomoc¹ najnowszej wersji Delphi mo¿na tworzyæ nie tylko „standardowe” aplikacje, ale równie¿ wykorzystywaæ mo¿liwoci oferowane przez .NET. Tworzenie aplikacji klient-serwer, us³ug sieciowych, intranetów i dynamicznych witryn WWW w oparciu o tê platformê sta³o siê szybsze i ³atwiejsze. Wiêksze mo¿liwoci poci¹gnê³y za sob¹ równie¿ sporo zmian w samym rodowisku i sposobie korzystania z niego. Ksi¹¿ka „Delphi 2005. Kompendium programisty” przedstawia najnowsz¹ wersjê tego popularnego narzêdzia. Jej pierwsza czêæ opisuje zagadnienia podstawowe — interfejs u¿ytkownika i zasady programowania, najwa¿niejsze elementy platformy .NET oraz podstawy wizualnego tworzenia aplikacji. Kolejne czêci zawieraj¹ bardziej zaawansowane tematy — wykrywanie b³êdów w programach, tworzenie aplikacji dla platformy .NET, komunikacja z bazami danych oraz programowanie sieciowe. Czytaj¹c ksi¹¿kê, dowiesz siê, jak tworzyæ aplikacje i us³ugi sieciowe, jak korzystaæ z technologii XML i IntraWeb oraz jak tworzyæ wydajne aplikacje klient-serwer. • Interfejs u¿ytkownika Delphi 2005 • Jêzyk programowania Delphi • Podstawowe elementy .NET • Wizualne tworzenie aplikacji i stosowanie komponentów • rodowisko .NET Framework • Zasady programowania obiektowego • Wykrywanie b³êdów w aplikacjach • Aplikacje bazodanowe • Technologia ADO.NET i BDE.NET • Wykorzystanie jêzyka XML • Tworzenie dynamicznych witryn WWW w jêzyku ASP.NET • Us³ugi sieciowe • Podstawy jêzyka C# Jeli planujesz wykorzystanie Delphi 2005 do budowania aplikacji dla platformy .NET, ta ksi¹¿ka bêdzie dla Ciebie niezast¹pionym ród³em informacji

description

Nowa wersja środowiska programistycznego Delphi to kolejne nowości -- pełna integracja zarówno z platformą .NET, jak i Win32, nowe technologie tworzenia aplikacji, nowe komponenty i możliwość stosowania nie tylko języka Delphi, ale również C#. Za pomocą najnowszej wersji Delphi można tworzyć nie tylko "standardowe" aplikacje, ale również wykorzystywać możliwości oferowane przez .NET. Tworzenie aplikacji klient-serwer, usług sieciowych, intranetów i dynamicznych witryn WWW w oparciu o tę platformę stało się szybsze i łatwiejsze. Większe możliwości pociągnęły za sobą również sporo zmian w samym środowisku i sposobie korzystania z niego. Książka "Delphi 2005. Kompendium programisty" przedstawia najnowszą wersję tego popularnego narzędzia. Jej pierwsza część opisuje zagadnienia podstawowe -- interfejs użytkownika i zasady programowania, najważniejsze elementy platformy .NET oraz podstawy wizualnego tworzenia aplikacji. Kolejne części zawierają bardziej zaawansowane tematy -- wykrywanie błędów w programach, tworzenie aplikacji dla platformy .NET, komunikacja z bazami danych oraz programowanie sieciowe. Czytając książkę, dowiesz się, jak tworzyć aplikacje i usługi sieciowe, jak korzystać z technologii XML i IntraWeb oraz jak tworzyć wydajne aplikacje klient-serwer. * Interfejs użytkownika Delphi 2005* Język programowania Delphi* Podstawowe elementy .NET* Wizualne tworzenie aplikacji i stosowanie komponentów* Środowisko .NET Framework* Zasady programowania obiektowego* Wykrywanie błędów w aplikacjach* Aplikacje bazodanowe* Technologia ADO.NET i BDE.NET* Wykorzystanie języka XML* Tworzenie dynamicznych witryn WWW w języku ASP.NET* Usługi sieciowe* Podstawy języka C# Jeśli planujesz wykorzystanie Delphi 2005 do budowania aplikacji dla platformy .NET, ta książka będzie dla Ciebie niezastąpionym źródłem informacji.

Transcript of Delphi 2005. Kompendium programisty

Wydawnictwo Helionul. Chopina 644-100 Gliwicetel. (32)230-98-63e-mail: [email protected]

PRZYK£ADOWY ROZDZIA£PRZYK£ADOWY ROZDZIA£

IDZ DOIDZ DO

ZAMÓW DRUKOWANY KATALOGZAMÓW DRUKOWANY KATALOG

KATALOG KSI¥¯EKKATALOG KSI¥¯EK

TWÓJ KOSZYKTWÓJ KOSZYK

CENNIK I INFORMACJECENNIK I INFORMACJE

ZAMÓW INFORMACJEO NOWO�CIACH

ZAMÓW INFORMACJEO NOWO�CIACH

ZAMÓW CENNIKZAMÓW CENNIK

CZYTELNIACZYTELNIA

FRAGMENTY KSI¥¯EK ONLINEFRAGMENTY KSI¥¯EK ONLINE

SPIS TRE�CISPIS TRE�CI

DODAJ DO KOSZYKADODAJ DO KOSZYKA

KATALOG ONLINEKATALOG ONLINE

Delphi 2005.Kompendium programistyAutor: Adam BoduchISBN: 83-7361-780-9Format: B5, stron: 1048

Nowa wersja �rodowiska programistycznego Delphi to kolejne nowo�ci — pe³na integracja zarówno z platform¹ .NET, jak i Win32, nowe technologie tworzenia aplikacji, nowe komponenty i mo¿liwo�æ stosowania nie tylko jêzyka Delphi, ale równie¿ C#.Za pomoc¹ najnowszej wersji Delphi mo¿na tworzyæ nie tylko „standardowe” aplikacje, ale równie¿ wykorzystywaæ mo¿liwo�ci oferowane przez .NET. Tworzenie aplikacji klient-serwer, us³ug sieciowych, intranetów i dynamicznych witryn WWW w oparciuo tê platformê sta³o siê szybsze i ³atwiejsze. Wiêksze mo¿liwo�ci poci¹gnê³y za sob¹ równie¿ sporo zmian w samym �rodowisku i sposobie korzystania z niego.

Ksi¹¿ka „Delphi 2005. Kompendium programisty” przedstawia najnowsz¹ wersjê tego popularnego narzêdzia. Jej pierwsza czê�æ opisuje zagadnienia podstawowe — interfejs u¿ytkownika i zasady programowania, najwa¿niejsze elementy platformy .NEToraz podstawy wizualnego tworzenia aplikacji. Kolejne czê�ci zawieraj¹ bardziej zaawansowane tematy — wykrywanie b³êdów w programach, tworzenie aplikacjidla platformy .NET, komunikacja z bazami danych oraz programowanie sieciowe. Czytaj¹c ksi¹¿kê, dowiesz siê, jak tworzyæ aplikacje i us³ugi sieciowe, jak korzystaæz technologii XML i IntraWeb oraz jak tworzyæ wydajne aplikacje klient-serwer.

• Interfejs u¿ytkownika Delphi 2005• Jêzyk programowania Delphi• Podstawowe elementy .NET• Wizualne tworzenie aplikacji i stosowanie komponentów• �rodowisko .NET Framework• Zasady programowania obiektowego• Wykrywanie b³êdów w aplikacjach• Aplikacje bazodanowe• Technologia ADO.NET i BDE.NET• Wykorzystanie jêzyka XML• Tworzenie dynamicznych witryn WWW w jêzyku ASP.NET• Us³ugi sieciowe• Podstawy jêzyka C#

Je�li planujesz wykorzystanie Delphi 2005 do budowania aplikacji dla platformy .NET,

ta ksi¹¿ka bêdzie dla Ciebie niezast¹pionym �ród³em informacji

Spis treści

Tematyka książki .......................................................................................................................................25

Część I .........................................................................................................................................27

Rozdział 1. Wstęp do programowania ........................................................................................................................29Historia informatyki ....................................................................................................... 29Czym jest programowanie? ............................................................................................ 30Języki programowania .................................................................................................... 31

Asembler .................................................................................................................. 33Fortran ...................................................................................................................... 33C .............................................................................................................................. 34C++ .......................................................................................................................... 34Perl ........................................................................................................................... 34PHP .......................................................................................................................... 35Turbo Pascal ............................................................................................................. 35Java .......................................................................................................................... 35C# ............................................................................................................................ 36

Kilka słów o kompilatorach ............................................................................................ 36Działanie kompilatorów ........................................................................................... 37Który kompilator wybrać? ....................................................................................... 38

Dzień programisty .......................................................................................................... 39Delphi ............................................................................................................................. 39

Object Pascal ............................................................................................................ 40Delphi — czy warto? ............................................................................................... 40

Co będzie potrzebne w trakcie nauki? ............................................................................ 41Instalacja Delphi ............................................................................................................. 41

Wersje Delphi .......................................................................................................... 42Cennik ...................................................................................................................... 42Wymagania Delphi .................................................................................................. 43Instalacja .................................................................................................................. 43

Jak się uczyć? ................................................................................................................. 44

6 Delphi 2005. Kompendium programisty

Podstawowe okna Delphi ............................................................................................... 45Welcome Page .......................................................................................................... 46Okno główne ............................................................................................................ 47Projektant formularzy ............................................................................................... 48Paleta narzędzi ......................................................................................................... 48Inspektor obiektów ................................................................................................... 49Menedżer projektu ................................................................................................... 51Edytor kodu .............................................................................................................. 52Ukrywanie okna ....................................................................................................... 54

Pierwszy projekt ............................................................................................................. 54Tworzenie projektu .................................................................................................. 54Zapisywanie projektu ............................................................................................... 55Uruchamianie programu ........................................................................................... 55Zamykanie programu ............................................................................................... 56Otwieranie projektu .................................................................................................. 56

Kompilacja projektu ....................................................................................................... 57Pliki projektu .................................................................................................................. 57Przydatne odnośniki ....................................................................................................... 58Test ................................................................................................................................. 59FAQ ................................................................................................................................ 60Podsumowanie ............................................................................................................... 62

Rozdział 2. Wprowadzenie do .NET ..........................................................................................................................63Interfejs programistyczny ............................................................................................... 64

API systemu Windows ............................................................................................. 64Wizja .NET ..................................................................................................................... 65

Składniki platformy .NET ........................................................................................ 66Konkluzja ................................................................................................................. 69

Delphi a .NET ................................................................................................................ 69Rodzaje aplikacji ............................................................................................................ 70

Aplikacje konsolowe ................................................................................................ 70Windows Forms ....................................................................................................... 70VCL ......................................................................................................................... 70VCL.NET ................................................................................................................. 71Windows Forms vs VCL.NET ................................................................................. 72Formularze Web Forms ............................................................................................ 73

Składniki .NET Framework ............................................................................................ 74Usługi sieciowe .............................................................................................................. 74

Niezależność ............................................................................................................ 75Uniwersalność .......................................................................................................... 75

Test ................................................................................................................................. 76FAQ ................................................................................................................................ 77Podsumowanie ............................................................................................................... 78

Rozdział 3. Język Delphi ................................................................................................................................................79Aplikacje konsolowe ...................................................................................................... 80

Zapisywanie projektu ............................................................................................... 80Po kompilacji… ....................................................................................................... 81

Najprostszy program ...................................................................................................... 81Podstawowa składnia ..................................................................................................... 82

Czytanie kodu .......................................................................................................... 82Wielkość liter ........................................................................................................... 82

Spis treści 7

Pamiętaj o średniku! ................................................................................................. 83Bloki begin i end ...................................................................................................... 83Dyrektywa program ................................................................................................. 84

Komentarze .................................................................................................................... 84Umiejętne komentowanie ......................................................................................... 86

Wypisywanie tekstu ....................................................................................................... 86Położenie instrukcji .................................................................................................. 88Instrukcja Writeln .................................................................................................... 88

Zmienne .......................................................................................................................... 89Deklaracja zmiennych .............................................................................................. 89Typy danych ............................................................................................................. 90Deklaracja kilku zmiennych ..................................................................................... 91Przydział danych ...................................................................................................... 92Deklaracja zakresu danych ....................................................................................... 94Restrykcje w nazewnictwie ...................................................................................... 94

Stałe ................................................................................................................................ 95Domyślne typy stałych ............................................................................................. 95

Używanie zmiennych w programie ................................................................................ 97Łączenie danych ....................................................................................................... 97

Tablice danych ............................................................................................................... 99Tablice jako stałe .................................................................................................... 100Tablice wielowymiarowe ....................................................................................... 101Tablice dynamiczne ............................................................................................... 102Polecenia Low i High ............................................................................................. 103

Operatory ...................................................................................................................... 104Operatory przypisania ............................................................................................ 104Operatory porównania ............................................................................................ 105Operatory logiczne ................................................................................................. 105Operatory arytmetyczne ......................................................................................... 106Operatory bitowe .................................................................................................... 108Pozostałe operatory ................................................................................................ 109

Instrukcje warunkowe .................................................................................................. 109Instrukcja if..then ................................................................................................... 109Instrukcja case..of ................................................................................................... 112Instrukcja else ........................................................................................................ 115

Programowanie proceduralne ....................................................................................... 118Procedury i funkcje ...................................................................................................... 118

Procedury ............................................................................................................... 118Funkcje ................................................................................................................... 121Zmienne lokalne ..................................................................................................... 122Parametry procedur i funkcji .................................................................................. 123Parametry domyślne ............................................................................................... 125Przeciążanie funkcji i procedur .............................................................................. 126Przekazywanie parametrów do procedur i funkcji ................................................. 127Procedury zagnieżdżone ......................................................................................... 129Wplatanie funkcji i procedur .................................................................................. 129

Własne typy danych ..................................................................................................... 130Tablice jako nowy typ ............................................................................................ 130

Aliasy typów ................................................................................................................ 131Rekordy ........................................................................................................................ 132

Przekazywanie rekordów jako parametrów procedury ........................................... 132Deklarowanie rekordu jako zmiennej ..................................................................... 133Instrukcja packed ................................................................................................... 134

8 Delphi 2005. Kompendium programisty

Deklarowanie tablic rekordowych .......................................................................... 134Deklarowanie dynamicznych tablic rekordowych .................................................. 135

Instrukcja wiążąca with ................................................................................................ 135Programowanie strukturalne ......................................................................................... 136Moduły ......................................................................................................................... 136

Tworzenie nowego modułu .................................................................................... 137Budowa modułu ..................................................................................................... 137Włączanie modułu .................................................................................................. 139Funkcje wbudowane ............................................................................................... 139Sekcje Initialization oraz Finalization .................................................................... 139Dyrektywa forward ................................................................................................ 140

Konwersja typów .......................................................................................................... 142Rzutowanie ................................................................................................................... 144

Parametry nieokreślone .......................................................................................... 144Pętle .............................................................................................................................. 145

Pętla for..do ............................................................................................................ 145Pętla while..do ........................................................................................................ 148Pętla repeat..until .................................................................................................... 149Pętla for-in ............................................................................................................. 149Polecenie Continue ................................................................................................ 151Polecenie Break ...................................................................................................... 152

Zbiory ........................................................................................................................... 153Przypisywanie elementów zbioru ........................................................................... 154Odczytywanie elementów ze zbioru ....................................................................... 154Dodawanie i odejmowanie elementów zbioru ........................................................ 156

Typy wariantowe .......................................................................................................... 156VarType, VarTypeAsText ...................................................................................... 157VarToStr ................................................................................................................ 157VarIs* ..................................................................................................................... 158

Pliki dołączane ............................................................................................................. 158Etykiety ........................................................................................................................ 159Dyrektywy ostrzegawcze .............................................................................................. 160Wstęp do algorytmiki ................................................................................................... 161

Schematy blokowe ................................................................................................. 161Przykład — obliczanie silni ................................................................................... 163

Efektywny kod ............................................................................................................. 166Instrukcje warunkowe ............................................................................................ 166Typ Boolean w tablicach ........................................................................................ 167Zbiory ..................................................................................................................... 169Łączenie znaków w ciągach ................................................................................... 169

Test ............................................................................................................................... 170FAQ .............................................................................................................................. 171Podsumowanie ............................................................................................................. 173

Rozdział 4. IDE Delphi ..................................................................................................................................................175Podstawowe paski narzędzi .......................................................................................... 175

Pasek Standard ....................................................................................................... 176Pasek View ............................................................................................................. 176Pasek Debug ........................................................................................................... 177Pasek Desktop ........................................................................................................ 177Pasek Custom ......................................................................................................... 178Pozostałe paski narzędzi ........................................................................................ 178

Spis treści 9

Repozytorium obiektów ............................................................................................... 178Dodawanie projektu do repozytorium .................................................................... 179Ustawienia repozytorium ....................................................................................... 180

Praca z paletą narzędzi ................................................................................................. 181Umieszczanie komponentów na formularzu .......................................................... 182Umieszczanie kilku komponentów naraz ............................................................... 182Przycisk Categories ................................................................................................ 183Szukanie obiektu .................................................................................................... 183Przemieszczanie ikon ............................................................................................. 183Menu palety narzędzi ............................................................................................. 183

Praca z komponentami ................................................................................................. 185.NET ....................................................................................................................... 187Komponent ............................................................................................................. 187Sterowanie komponentem ...................................................................................... 188

Praca z inspektorem obiektów ...................................................................................... 188Edycja właściwości ................................................................................................ 189Zdarzenia ................................................................................................................ 191Menu inspektora obiektów ..................................................................................... 191Opcje inspektora obiektów ..................................................................................... 191

Projektant formularzy ................................................................................................... 192Siatka pomocnicza ................................................................................................. 192Usuwanie, kopiowanie i wklejanie ......................................................................... 194Zaznaczanie wielu komponentów .......................................................................... 194Menu projektanta formularzy ................................................................................. 195Pasek narzędziowy Align ....................................................................................... 196Pasek narzędziowy Spacing ................................................................................... 197Pasek narzędziowy Position ................................................................................... 198Opcje projektanta formularzy ................................................................................. 198

Projekty ........................................................................................................................ 199Opcje projektu ........................................................................................................ 200

Edytor WYSIWYG ...................................................................................................... 205Projektant strony WWW ........................................................................................ 206Inspektor obiektów ................................................................................................. 207Dodatkowe paski narzędzi ..................................................................................... 207Edycja pozostałych plików ..................................................................................... 208Opcje HTML w Delphi .......................................................................................... 209

Projektowanie interfejsu ............................................................................................... 210Paski narzędziowe .................................................................................................. 210Ikony dla paska narzędzi ........................................................................................ 211Menu główne ......................................................................................................... 213Menu podręczne ..................................................................................................... 214Pozostałe elementy interfejsu ................................................................................. 215

Kilka wersji językowych programu .............................................................................. 218Tworzenie angielskiej wersji językowej ................................................................. 219Tłumaczenie projektu ............................................................................................. 220Kompilacja projektu ............................................................................................... 221Opcje Translation Manager .................................................................................... 222

Opcje środowiska ......................................................................................................... 223Test ............................................................................................................................... 224FAQ .............................................................................................................................. 224Podsumowanie ............................................................................................................. 226

10 Delphi 2005. Kompendium programisty

Rozdział 5. Przegląd .NET Framework .................................................................................................................. 227Środowisko CLR .......................................................................................................... 227

Kod pośredni IL ..................................................................................................... 228Kod zarządzany i niezarządzany ............................................................................ 229Moduł zarządzany .................................................................................................. 229Podzespoły ............................................................................................................. 230Działanie CLR ........................................................................................................ 230

System CTS .................................................................................................................. 231Specyfikacja CLS ......................................................................................................... 232Biblioteka klas .............................................................................................................. 233Moduły i przestrzenie nazw .......................................................................................... 233

Wieloznaczność ..................................................................................................... 234Główne przestrzenie nazw ..................................................................................... 235Tworzenie przestrzeni nazw ................................................................................... 237

Test ............................................................................................................................... 237FAQ .............................................................................................................................. 238Podsumowanie ............................................................................................................. 238

Rozdział 6. Praca z kodem źródłowym ................................................................................................................... 239Na czym polega programowanie obiektowe? ............................................................... 239Biblioteki wizualne ....................................................................................................... 240Podstawowy kod formularza ........................................................................................ 241Formularz w VCL.NET ................................................................................................ 243

Sekcja uses ............................................................................................................. 243Klasa ...................................................................................................................... 244Zmienna wskazująca na klasę ................................................................................ 244Plik *.nfm ............................................................................................................... 244Generowanie kodu ................................................................................................. 245Nazwy komponentów ............................................................................................. 245

Programowanie zdarzeniowe ........................................................................................ 246Generowanie zdarzeń ............................................................................................. 246Lista zdarzeń w inspektorze obiektów ................................................................... 249Jedno zdarzenie dla kilku obiektów ....................................................................... 250

Edytor kodu .................................................................................................................. 251Ukrywanie kodu ..................................................................................................... 252Makra ..................................................................................................................... 252Code Insight ........................................................................................................... 252Code Completion ................................................................................................... 253Help Insight ............................................................................................................ 254Wyróżnianie błędów .............................................................................................. 254Menu podręczne edytora kodu ............................................................................... 255Opcje edytora kodu ................................................................................................ 256Skrawki kodu ......................................................................................................... 262

To-Do List .................................................................................................................... 263Generowanie komentarza TODO ........................................................................... 263Menu podręczne okna ............................................................................................ 264

Szablony kodu .............................................................................................................. 265Refaktoryzacja .............................................................................................................. 266

Deklaracja zmiennych ............................................................................................ 266Deklaracja pól ........................................................................................................ 267Wyodrębnianie metod ............................................................................................ 267Wyodrębnianie łańcucha zasobów ......................................................................... 267

Spis treści 11

Zmiana nazwy ........................................................................................................ 268Szukanie modułu .................................................................................................... 269

Synchroniczna edycja ................................................................................................... 269Wyszukiwanie odwołań ............................................................................................... 270Menedżer projektu ........................................................................................................ 271

Model View ........................................................................................................... 272Data Explorer ......................................................................................................... 272

Menedżer historii .......................................................................................................... 272Test ............................................................................................................................... 274FAQ .............................................................................................................................. 275Podsumowanie ............................................................................................................. 275

Rozdział 7. Programowanie obiektowe ................................................................................................................... 277Klasy ............................................................................................................................ 277

Składnia klasy ........................................................................................................ 278Do czego służą klasy? ............................................................................................ 278Hermetyzacja ......................................................................................................... 279Dziedziczenie ......................................................................................................... 280Polimorfizm ........................................................................................................... 280Instancja klasy ........................................................................................................ 280Konstruktor ............................................................................................................ 281Destruktor .............................................................................................................. 281Pola ........................................................................................................................ 281Metody ................................................................................................................... 282Tworzenie konstruktorów i destruktorów ............................................................... 283Destruktory w .NET ............................................................................................... 286Poziomy dostępu do klasy ...................................................................................... 290Dziedziczenie ......................................................................................................... 292Przeciążanie metod ................................................................................................. 293Typy metod ............................................................................................................ 293Przedefiniowanie metod ......................................................................................... 295Typy zagnieżdżone ................................................................................................. 299Parametr Self .......................................................................................................... 300Brak konstruktora ................................................................................................... 301Brak instancji klasy ................................................................................................ 302Class helpers .......................................................................................................... 304Klasy zaplombowane ............................................................................................. 305Słowo kluczowe static ............................................................................................ 305Właściwości ........................................................................................................... 306

Parametr Sender procedury zdarzeniowej .................................................................... 309Przechwytywanie informacji o naciśniętym klawiszu ............................................ 310Obsługa parametru Sender ..................................................................................... 312

Operatory is i as ............................................................................................................ 313Metody w rekordach ..................................................................................................... 314Interfejsy ...................................................................................................................... 315Przeładowanie operatorów ........................................................................................... 316

Jakie operatory można przeładować? ..................................................................... 317Deklaracja operatorów ........................................................................................... 317Binary i Unary ........................................................................................................ 319

Wyjątki ......................................................................................................................... 319Słowo kluczowe try..except ................................................................................... 320Słowo kluczowe try..finally .................................................................................... 321

12 Delphi 2005. Kompendium programisty

Słowo kluczowe raise ............................................................................................. 322Klasa Exception ..................................................................................................... 322Selektywna obsługa wyjątków ............................................................................... 323Zdarzenie OnException .......................................................................................... 324

Identyfikatory ............................................................................................................... 326Boksowanie typów ....................................................................................................... 327Przykład wykorzystania klas ........................................................................................ 328

Zasady gry .............................................................................................................. 328Specyfikacja klasy .................................................................................................. 329Zarys klasy ............................................................................................................. 330Sprawdzenie wygranej ........................................................................................... 333Interfejs aplikacji .................................................................................................... 337Tworzenie interfejsu graficznego ........................................................................... 340Gra Kółko i krzyżyk ............................................................................................... 341

Biblioteka VCL/VCL.NET ........................................................................................... 352Klasa TApplication ................................................................................................ 353Właściwości ........................................................................................................... 356Zdarzenia ................................................................................................................ 361

Programowanie w .NET ............................................................................................... 365Wspólny model programowania ............................................................................ 366Klasa System.Object .............................................................................................. 366

Test ............................................................................................................................... 368FAQ .............................................................................................................................. 369Podsumowanie ............................................................................................................. 370

Rozdział 8. Podzespoły .NET .......................................................................................................................................371Czym jest COM? .......................................................................................................... 371

Kontrolka w rozumieniu COM .............................................................................. 372Odrobinę historii .................................................................................................... 372ActiveX .................................................................................................................. 372DCOM ................................................................................................................... 373

Podstawowe podzespoły ............................................................................................... 373Słowo o funkcji ShellExecute ................................................................................ 375Deasembler .NET ................................................................................................... 376

Obiektowość .NET ....................................................................................................... 378Transformacja modułu ........................................................................................... 380

Komponenty .NET ....................................................................................................... 381Przygotowanie komponentu w Delphi ................................................................... 382Przygotowanie komponentu C# ............................................................................. 383Włączenie podzespołu w Delphi ............................................................................ 385

Atrybuty podzespołu .................................................................................................... 385Korzystanie z programu Reflection ........................................................................ 388

Mechanizm reflection ................................................................................................... 389Metadane ................................................................................................................ 389Funkcja GetType .................................................................................................... 389Klasa System.Type ................................................................................................. 390Ładowanie podzespołu ........................................................................................... 391Przykład — własny program Reflection ................................................................ 392Własne atrybuty ..................................................................................................... 398

Aplikacje .NET Framework SDK ................................................................................. 401Global Assembly Cache Tool ................................................................................ 402WinCV ................................................................................................................... 404

Spis treści 13

Narzędzie konfiguracji .NET Framework .............................................................. 404PEVerify — narzędzie weryfikacji ........................................................................ 405

Test ............................................................................................................................... 405FAQ .............................................................................................................................. 406Podsumowanie ............................................................................................................. 406

Rozdział 9. Wykrywanie błędów w aplikacjach ................................................................................................407Rodzaje błędów ............................................................................................................ 408Opcje kompilatora ........................................................................................................ 409Częste błędy programisty ............................................................................................. 411

Niezainicjalizowane zmienne obiektowe ............................................................... 411Zwalnianie obiektów .............................................................................................. 412Tablice .................................................................................................................... 412

Wskaźniki ..................................................................................................................... 413Rejestry .................................................................................................................. 414Stos ........................................................................................................................ 414Sterta ...................................................................................................................... 415Do czego służą wskaźniki? ..................................................................................... 415Tworzenie wskaźnika ............................................................................................. 415Przydział danych do wskaźników .......................................................................... 417Tworzenie wskaźników na struktury ...................................................................... 418Przydział i zwalnianie pamięci ............................................................................... 419Wartość pusta ......................................................................................................... 420

Debuger Delphi ............................................................................................................ 420Interfejs Debug ....................................................................................................... 420Opcje projektu ........................................................................................................ 421Punkty przerwań .................................................................................................... 423Polecenie Run to Cursor ......................................................................................... 428Podgląd zmiennych ................................................................................................ 429Inspektor śledzenia ................................................................................................. 431Evaluate/Modify ..................................................................................................... 432Okno Call Stack ..................................................................................................... 434Okno Local Variables ............................................................................................ 434Okno Thread Status ................................................................................................ 435Okno Event Log ..................................................................................................... 436Okno modułów ....................................................................................................... 437Okno deasemblacji ................................................................................................. 438Polecenie Go to Address ........................................................................................ 438Okno Message View .............................................................................................. 439

Praca krokowa .............................................................................................................. 440Ikony na gutterze .................................................................................................... 440Przekraczanie i wkraczanie .................................................................................... 441

Opcje debugera ............................................................................................................. 442Strona Borland Debuggers ..................................................................................... 443Zakładka Language Exceptions .............................................................................. 444Zakładka Native OS Exceptions ............................................................................. 444Zakładka Event Log ............................................................................................... 444

Menu związane z debugerem ....................................................................................... 445Test ............................................................................................................................... 446FAQ .............................................................................................................................. 447Podsumowanie ............................................................................................................. 448

14 Delphi 2005. Kompendium programisty

Rozdział 10. Praca z plikami .........................................................................................................................................449Definicja pliku .............................................................................................................. 450Pliki tekstowe ............................................................................................................... 450

Inicjalizacja ............................................................................................................ 450Tworzenie nowego pliku ........................................................................................ 451Otwieranie istniejącego pliku ................................................................................. 451Odczyt plików tekstowych ..................................................................................... 452Zapis nowych danych w pliku ................................................................................ 453Zapis danych na końcu pliku .................................................................................. 454

Pliki amorficzne ........................................................................................................... 455Otwieranie i zamykanie plików .............................................................................. 455Tryb otwarcia pliku ................................................................................................ 456Zapis i odczyt danych ............................................................................................. 456Przykład działania — kopiowanie plików .............................................................. 457

Inne funkcje operujące na plikach ................................................................................ 460Funkcje operujące na katalogach .................................................................................. 462Pliki typowane .............................................................................................................. 463

Deklaracja .............................................................................................................. 463Tworzenie pliku i dodawanie danych ..................................................................... 464Odczyt rekordu z pliku ........................................................................................... 465Przykład działania — książka adresowa ................................................................ 465

Kopiowanie i przenoszenie plików ............................................................................... 472Kopiowanie ............................................................................................................ 472Przenoszenie pliku ................................................................................................. 472Struktura TSHFileOpStruct .................................................................................... 473

Strumienie .................................................................................................................... 475Podział strumieni .................................................................................................... 475Prosty przykład na początek ................................................................................... 476Konstruktor klasy TFileStream .............................................................................. 477Pozostałe metody i właściwości klasy TStream ..................................................... 478Właściwości ........................................................................................................... 478Metody ................................................................................................................... 479Praktyczny przykład ............................................................................................... 480

Wyszukiwanie .............................................................................................................. 486Rekord TSearchRec ............................................................................................... 487Jak zrealizować wyszukiwanie? ............................................................................. 487Rekurencja ............................................................................................................. 488Praktyczny przykład ............................................................................................... 489

Informacja o dyskach ................................................................................................... 493Pobieranie listy dysków ......................................................................................... 493Pobieranie informacji o rozmiarze dysku ............................................................... 494Pobieranie dodatkowych informacji ....................................................................... 494

Obsługa plików w .NET ............................................................................................... 497Klasy przestrzeni nazw System.IO ......................................................................... 497Praca z plikami ....................................................................................................... 498Praca z katalogami ................................................................................................. 500Strumienie .............................................................................................................. 502Praca z plikami ....................................................................................................... 502

Test ............................................................................................................................... 504FAQ .............................................................................................................................. 505Podsumowanie ............................................................................................................. 507

Spis treści 15

Rozdział 11. Migracja do .NET ................................................................................................................................... 509Czy warto przechodzić do .NET? ................................................................................. 510Ewolucja platform programistycznych ......................................................................... 510

WinFX ................................................................................................................... 511Brakujące komponenty ................................................................................................. 512

Zmiany we właściwościach .................................................................................... 512Elementy języka ........................................................................................................... 512

Wszystko jest klasą! ............................................................................................... 512Przestrzenie nazw ................................................................................................... 513Kompilacja warunkowa .......................................................................................... 513Brakujące elementy ................................................................................................ 515Ciągi znakowe w Delphi ........................................................................................ 523Komunikaty ............................................................................................................ 531Destruktory ............................................................................................................. 531

WinForms ..................................................................................................................... 532Brak pliku *.dfm/*.nfm .......................................................................................... 533VCL i WinForms ................................................................................................... 537

Platform Invoke ............................................................................................................ 538Wywołanie standardowe ........................................................................................ 539Użycie atrybutu DLLImport ................................................................................... 540Parametry wyjściowe ............................................................................................. 541Dane wskaźnikowe ................................................................................................. 543Pobieranie danych z bufora .................................................................................... 544Kod zarządzany i niezarządzany ............................................................................ 545Używanie funkcji Win32 ....................................................................................... 545Marshaling ............................................................................................................. 546Wady PInvoke ........................................................................................................ 558

.NET a obiekty COM ................................................................................................... 558Terminologia COM ................................................................................................ 559Mechanizm COM Callable Wrappers .................................................................... 560Przykładowy podzespół ......................................................................................... 561Utworzenie biblioteki typu ..................................................................................... 564Użycie biblioteki typu ............................................................................................ 564Korzystanie z klasy COM ...................................................................................... 565Kontrolki COM w aplikacjach .NET ...................................................................... 569

Aplikacje sieciowe ....................................................................................................... 570Test ............................................................................................................................... 570FAQ .............................................................................................................................. 571Podsumowanie ............................................................................................................. 572

Rozdział 12. Co nowego w Delphi 2005? ...................................................................................................................573Trzy osobowości .......................................................................................................... 573IDE Delphi ................................................................................................................... 574

Strona powitalna .................................................................................................... 574Historia i kopie zapasowe ...................................................................................... 574Okno struktury ....................................................................................................... 575Synchroniczna edycja ............................................................................................. 575Help Insight ............................................................................................................ 576Wyróżnianie błędów .............................................................................................. 577Paleta narzędzi ....................................................................................................... 577Wyszukiwanie ........................................................................................................ 577Pozostałe ................................................................................................................ 578

16 Delphi 2005. Kompendium programisty

Debuger ........................................................................................................................ 578HTML .......................................................................................................................... 579Bazy danych ................................................................................................................. 579

dbGo for ADO ....................................................................................................... 579dbExpress ............................................................................................................... 579BDP.NET ............................................................................................................... 579Pozostałe ................................................................................................................ 580

Refaktoryzacja .............................................................................................................. 580Zmiany w języku Delphi .............................................................................................. 580

Wplatanie funkcji i procedur .................................................................................. 580Pętla for-in ............................................................................................................. 581Kodowanie Unicode ............................................................................................... 583

Podsumowanie ............................................................................................................. 583

Część II .....................................................................................................................................585

Rozdział 13. Architektura bazodanowa Delphi ..................................................................................................... 587Czym jest baza danych? ............................................................................................... 587Działanie baz danych .................................................................................................... 588Rozwiązania alternatywne ............................................................................................ 589Baza danych a własny mechanizm ............................................................................... 590Rodzaje baz danych ...................................................................................................... 591

Bazy proste ............................................................................................................. 591Relacyjne bazy danych ........................................................................................... 591Bazy danych typu klient-serwer ............................................................................. 592Wielowarstwowa architektura baz danych ............................................................. 593

Borland Database Engine ............................................................................................. 593Sterowniki bazy danych ......................................................................................... 593Zbiory danych ........................................................................................................ 594Komponenty bazodanowe ...................................................................................... 595

Praca z komponentami ................................................................................................. 599Otwieranie i zamykanie zbioru danych .................................................................. 599Nawigowanie wśród rekordów ............................................................................... 600Modyfikacja zawartości ......................................................................................... 602Pola rekordu bazy danych ...................................................................................... 603

Edytor pól ..................................................................................................................... 607Pola obliczeniowe .................................................................................................. 608Pola przeglądowe ................................................................................................... 609

SQL Explorer ............................................................................................................... 610Tworzenie aliasu .................................................................................................... 610

Praca z tabelami ........................................................................................................... 611Tworzenie tabel ...................................................................................................... 612Tworzenie kolumn w kodzie programu .................................................................. 612

Filtrowanie danych ....................................................................................................... 614Wykorzystanie właściwości Filter .......................................................................... 615Zdarzenie OnFilterRecord ...................................................................................... 616

Wyszukiwanie rekordów .............................................................................................. 617Metoda Locate ........................................................................................................ 618Metoda FindKey ..................................................................................................... 619

Przykładowa aplikacja .................................................................................................. 619Założenia ................................................................................................................ 620Tworzenie interfejsu ............................................................................................... 621

Spis treści 17

Kod źródłowy aplikacji .......................................................................................... 625Ćwiczenia dodatkowe ............................................................................................ 636

Zakładki ........................................................................................................................ 636Pozostałe komponenty bazodanowe ............................................................................. 637

Komponent TDbGrid ............................................................................................. 637Komponent TDbNavigator ..................................................................................... 637Komponent TDbText ............................................................................................. 638Komponent TDbEdit .............................................................................................. 639Komponent TDbMemo .......................................................................................... 639Komponent TDbRichEdit ...................................................................................... 639Komponent TDbImage ........................................................................................... 639Komponent TDbCheckBox .................................................................................... 639

Test ............................................................................................................................... 640FAQ .............................................................................................................................. 640Podsumowanie ............................................................................................................. 642

Rozdział 14. dbExpress ....................................................................................................................................................643Architektura klient-serwer ............................................................................................ 643

Klient ..................................................................................................................... 644Serwer .................................................................................................................... 644Klient-serwer oraz bazy lokalne ............................................................................. 645

Język SQL .................................................................................................................... 646Baza MySQL .......................................................................................................... 646InterBase ................................................................................................................ 647

Schemat tworzenia aplikacji klient-serwer ................................................................... 647Analiza ................................................................................................................... 647Projekt .................................................................................................................... 648Budowa .................................................................................................................. 648

Programowanie w SQL ................................................................................................ 648Klient MySQL ........................................................................................................ 649Tworzenie bazy danych .......................................................................................... 651Tworzenie tabel ...................................................................................................... 651Zmiana struktury tabeli .......................................................................................... 657Indeksy ................................................................................................................... 659Dodawanie rekordów ............................................................................................. 663Wyświetlanie informacji ........................................................................................ 664Uaktualnianie zawartości ....................................................................................... 670Usuwanie danych z tabeli ....................................................................................... 671Eksport i import bazy ............................................................................................. 671

Aplikacja zarządzająca MySQL ................................................................................... 672Praca z programem MySQL Control Center .......................................................... 673Praca z tabelami ..................................................................................................... 674

InterBase ...................................................................................................................... 676Uruchomienie ......................................................................................................... 677Program IBConsole ................................................................................................ 678MySQL a InterBase ................................................................................................ 681Tworzenie tabel InterBase ...................................................................................... 690

dbExpress ..................................................................................................................... 692dbExpress a BDE ................................................................................................... 692Połączenie z bazą danych ....................................................................................... 692Komponent TSQLDataSet ..................................................................................... 698Komponent TSQLMonitor ..................................................................................... 703

18 Delphi 2005. Kompendium programisty

Pozostałe komponenty dbExpress .......................................................................... 705Dystrybucja aplikacji dbExpress ............................................................................ 705

Okno Data Explorer ..................................................................................................... 705Wprowadzanie zmian w tabeli ............................................................................... 707Edytor połączeń ...................................................................................................... 707

Test ............................................................................................................................... 708FAQ .............................................................................................................................. 709Podsumowanie ............................................................................................................. 709

Rozdział 15. IBX ..................................................................................................................................................................711Dlaczego IBX? ............................................................................................................. 711

Zalety IBX ............................................................................................................. 712Komponenty IBX ......................................................................................................... 713

Komponent TIBDatabase ....................................................................................... 713Komponent TIBDataSet ......................................................................................... 716Komponenty reprezentujące dane .......................................................................... 719TIBSQLMonitor ..................................................................................................... 720Komponenty administracyjne ................................................................................. 720

Łączenie ze zdalnym serwerem .................................................................................... 720Przykład wykorzystania IBX ........................................................................................ 721

Tworzenie bazy danych .......................................................................................... 722Piszemy aplikację Helion DB! ............................................................................... 729

Test ............................................................................................................................... 732FAQ .............................................................................................................................. 732Podsumowanie ............................................................................................................. 733

Rozdział 16. Przegląd ADO.NET ................................................................................................................................735Czym jest ADO? .......................................................................................................... 735Terminologia ................................................................................................................ 736Warstwy dostępu .......................................................................................................... 737Architektura baz danych ............................................................................................... 738ADO.NET .................................................................................................................... 739

Architektura ADO.NET ......................................................................................... 739Źródło danych ........................................................................................................ 739Dostawca danych ................................................................................................... 740Zbiory danych ........................................................................................................ 740

ADO.NET w praktyce .................................................................................................. 741Łączenie ze źródłem ODBC ................................................................................... 741Łączenie ze źródłem OleDB ................................................................................... 742Wysyłanie zapytań (MS Access) ............................................................................ 743

Sterowniki zarządzane .................................................................................................. 746Test ............................................................................................................................... 747FAQ .............................................................................................................................. 748Podsumowanie ............................................................................................................. 749

Rozdział 17. BDP.NET .....................................................................................................................................................751BDP.NET ..................................................................................................................... 751Łączenie z bazą InterBase ............................................................................................ 752

Komponent BDPConnection .................................................................................. 754Komponent BdpCommand ..................................................................................... 754Komponent BdpDataAdapter ................................................................................. 755Wyświetlanie zwartości tabeli ................................................................................ 758

Spis treści 19

Praca z danymi ............................................................................................................. 759Zapytania SQL ....................................................................................................... 760

Dystrybucja aplikacji BDP.NET .................................................................................. 760MySQL w ADO.NET ................................................................................................... 761

Korzystanie ze sterownika MySQL ........................................................................ 762Komponenty wizualne ........................................................................................... 768

Test ............................................................................................................................... 770FAQ .............................................................................................................................. 770Podsumowanie ............................................................................................................. 771

Część III .................................................................................................................................. 773

Rozdział 18. XML ............................................................................................................................................................. 775Niezależność XML ....................................................................................................... 776XHTML ........................................................................................................................ 776Budowa dokumentu ...................................................................................................... 776

Prolog ..................................................................................................................... 777Znaczniki ................................................................................................................ 778Atrybuty ................................................................................................................. 780Podstawowa terminologia ...................................................................................... 780Węzeł główny ........................................................................................................ 781Komentarze ............................................................................................................ 781Przestrzenie nazw ................................................................................................... 781Składnia przestrzeni nazw ...................................................................................... 782Przestrzenie nazw i atrybuty ................................................................................... 782

DTD ............................................................................................................................. 783Deklaracja elementu ............................................................................................... 784Deklaracja atrybutu ................................................................................................ 784DTD w osobnym pliku ........................................................................................... 786

Encje tekstowe .............................................................................................................. 787XSD .............................................................................................................................. 788

Nagłówek XSD ...................................................................................................... 789Elementy XSD ....................................................................................................... 789Typy danych ........................................................................................................... 790Typy proste ............................................................................................................ 790

XML a bazy danych ..................................................................................................... 793XSL .............................................................................................................................. 793DOM ............................................................................................................................ 794SAX .............................................................................................................................. 795Korzystanie z System.XML ......................................................................................... 795

Ładowanie pliku XML ........................................................................................... 795Odczyt dowolnego elementu .................................................................................. 796Odczyt wartości atrybutów ..................................................................................... 798Tworzenie pliku XML ............................................................................................ 801Eksport danych do postaci XML ............................................................................ 806Modyfikacja plików ............................................................................................... 808

Test ............................................................................................................................... 811FAQ .............................................................................................................................. 812Podsumowanie ............................................................................................................. 813

20 Delphi 2005. Kompendium programisty

Rozdział 19. IntraWeb ......................................................................................................................................................815Czym właściwie jest IntraWeb? ................................................................................... 815Dynamiczne strony WWW ........................................................................................... 816

CGI, ISAPI, NSAPI ............................................................................................... 816PHP ........................................................................................................................ 818

Tworzenie projektu IntraWeb ....................................................................................... 819Praca z komponentami ........................................................................................... 820Praca z kodem ........................................................................................................ 820Uruchamianie programu ......................................................................................... 821

Serwer IntraWeb .......................................................................................................... 821Obsługa serwera ..................................................................................................... 822

Generowanie zdarzeń ................................................................................................... 822Zdarzenia zastępcze ............................................................................................... 823

Kilka formularzy w jednym projekcie .......................................................................... 825Funkcja ShowMessage w IntraWeb ....................................................................... 826

Elementy HTML i JavaScript ....................................................................................... 827Wysyłanie plików ......................................................................................................... 828IntraWeb jako rozszerzenie ISAPI ............................................................................... 828

Konwertowanie aplikacji do ISAPI ........................................................................ 829Test ............................................................................................................................... 831FAQ .............................................................................................................................. 831Podsumowanie ............................................................................................................. 831

Rozdział 20. ASP.NET .....................................................................................................................................................833Dynamiczne strony WWW ........................................................................................... 833

ASP ........................................................................................................................ 834ASP.NET ............................................................................................................... 834

ASP i ASP.NET ........................................................................................................... 835Zmiany w kodzie .................................................................................................... 835Kompilacja kodu .................................................................................................... 835Migracja do ASP.NET ........................................................................................... 835Zgodność ze standardem XHTML ......................................................................... 838

Narzędzia ...................................................................................................................... 839Edytor ..................................................................................................................... 839Serwer .................................................................................................................... 840Instalacja ASP.NET ............................................................................................... 841Co trzeba umieć? .................................................................................................... 842

ASP.NET w Delphi ...................................................................................................... 842Elementy interfejsu ................................................................................................ 843Pierwszy projekt ..................................................................................................... 844Opcje ASP.NET ..................................................................................................... 845

Web Forms ................................................................................................................... 845Przestrzeń nazw System.Web.UI ........................................................................... 845

Praca z ASP.NET ......................................................................................................... 846Kontrolki działające po stronie serwera ................................................................. 847Zdarzenia komponentów ........................................................................................ 848Kontrolki Web Forms ............................................................................................ 851Code Behind ........................................................................................................... 856Kontrolki użytkownika ........................................................................................... 858Tworzenie kontrolek w Delphi ............................................................................... 860Komponenty .NET w ASP.NET ............................................................................ 864Konfiguracja stron ASP.NET ................................................................................. 872

Spis treści 21

Sesje ....................................................................................................................... 875Wysyłanie wiadomości e-mail ............................................................................... 880Monitorowanie stron ASP.NET ............................................................................. 881Pamięć podręczna .................................................................................................. 881

Bazy danych w ASP.NET ............................................................................................ 883Łączenie się z bazą ................................................................................................. 883Kontrolki bazodanowe ........................................................................................... 885

Technologie internetowe .............................................................................................. 887Komponenty HTML Producer ............................................................................... 888WebBroker ............................................................................................................. 888Internet Express ...................................................................................................... 888WebSnap ................................................................................................................ 888IntraWeb ................................................................................................................ 889ASP.NET ............................................................................................................... 889

Test ............................................................................................................................... 889FAQ .............................................................................................................................. 890Podsumowanie ............................................................................................................. 891

Rozdział 21. Usługi sieciowe .......................................................................................................................................... 893Czym są usługi sieciowe? ............................................................................................. 893Działanie usług sieciowych .......................................................................................... 895

HTTP ..................................................................................................................... 895XML ....................................................................................................................... 895Infrastruktura usług sieciowych ............................................................................. 895

Użycie usług sieciowych .............................................................................................. 898Wyszukiwarka google.com .................................................................................... 898Interfejs aplikacji .................................................................................................... 900Ładowanie usługi sieciowej ................................................................................... 900Korzystanie z usługi Web ...................................................................................... 902

Usługi sieciowe w Delphi ............................................................................................. 908Tworzenie usługi sieciowej .................................................................................... 909Podgląd usługi sieciowej ........................................................................................ 911Usługa Web na stronie ASP.NET .......................................................................... 915Plik źródłowy *.asmx ............................................................................................. 917

Bezpieczeństwo usług sieciowych ................................................................................ 917Bazy danych ................................................................................................................. 919

Projektowanie usługi .............................................................................................. 920Sprawdzanie usługi sieciowej ................................................................................ 927Usługa sieciowa w aplikacji ASP.NET .................................................................. 927

Test ............................................................................................................................... 930FAQ .............................................................................................................................. 930Podsumowanie ............................................................................................................. 931

Rozdział 22. Odpowiedzi ................................................................................................................................................. 933Rozdział 1. .................................................................................................................... 933Rozdział 2. .................................................................................................................... 934Rozdział 3. .................................................................................................................... 934Rozdział 4. .................................................................................................................... 935Rozdział 5. .................................................................................................................... 935Rozdział 6. .................................................................................................................... 935Rozdział 7. .................................................................................................................... 936Rozdział 8. .................................................................................................................... 936

22 Delphi 2005. Kompendium programisty

Rozdział 9. .................................................................................................................... 937Rozdział 10. .................................................................................................................. 937Rozdział 11. .................................................................................................................. 937Rozdział 13. .................................................................................................................. 938Rozdział 14 ................................................................................................................... 938Rozdział 15 ................................................................................................................... 938Rozdział 16 ................................................................................................................... 939Rozdział 17 ................................................................................................................... 939Rozdział 18 ................................................................................................................... 939Rozdział 19 ................................................................................................................... 940Rozdział 20 ................................................................................................................... 940Rozdział 21 ................................................................................................................... 940

Dodatki ................................................................................................................................... 941

Dodatek A Podstawy języka C# ............................................................................................................................... 943C# w Delphi ................................................................................................................. 943Biblioteka klas .............................................................................................................. 944Podstawowa składnia ................................................................................................... 944

C# jako język obiektowy ........................................................................................ 945Metoda Main() ....................................................................................................... 946

Zmienne ........................................................................................................................ 948Deklaracja kilku zmiennych ................................................................................... 949Przydział danych .................................................................................................... 950

Stałe .............................................................................................................................. 950Tablice .......................................................................................................................... 951

Tablice wielowymiarowe ....................................................................................... 952Operatory ...................................................................................................................... 952

Operatory inkrementacji ......................................................................................... 954Operatory przypisania ............................................................................................ 955Operator rzutowania ............................................................................................... 955

Instrukcje warunkowe .................................................................................................. 956Instrukcja if ............................................................................................................ 956Instrukcja switch .................................................................................................... 956Operator trójoperandowy ....................................................................................... 957

Funkcje w C# ............................................................................................................... 958Parametry funkcji ................................................................................................... 958Przekazywanie parametrów .................................................................................... 959

Pętle .............................................................................................................................. 960Pętla for .................................................................................................................. 960Pętla foreach ........................................................................................................... 961Pętla while .............................................................................................................. 962Pętla do..while ........................................................................................................ 962

Klasy ............................................................................................................................ 963Tworzenie instancji klasy ....................................................................................... 963Metody ................................................................................................................... 964Pola ........................................................................................................................ 964Konstruktor ............................................................................................................ 965Właściwości ........................................................................................................... 965

Struktury ....................................................................................................................... 967Podsumowanie ............................................................................................................. 967

Spis treści 23

Dodatek B Akronimy ....................................................................................................................................................969

Dodatek C Spis przestrzeni nazw .NET ..................................................................................................................971

Dodatek D Słowniczek ................................................................................................................................................... 977

Dodatek E Zasady pisania kodu ............................................................................................................................... 993Stosowanie wcięć ......................................................................................................... 994Instrukcje begin i end ................................................................................................... 994Styl ,,wielbłądzi’’ w nazwach procedur ....................................................................... 995Stosuj wielkie litery ...................................................................................................... 995Parametry procedur ...................................................................................................... 996Instrukcja if .................................................................................................................. 996Instrukcja case .............................................................................................................. 996Obsługa wyjątków ........................................................................................................ 997Klasy ............................................................................................................................ 997Komentarze .................................................................................................................. 997Pliki i nazwy formularzy .............................................................................................. 998Notacja węgierska ........................................................................................................ 998Czy warto? ................................................................................................................... 998

Skorowidz ...................................................................................................................................................1001

5.Przegląd .NET Framework

W rozdziale 2. omówiłem podstawowe aspekty platformy .NET. Czytelnik powinien już znaćpodstawowe pojęcia związane z tą technologią, a także umieć pisać proste aplikacje w Delphi.Jak dotąd jednak przykłady prezentowane przeze mnie w rozdziale 3. były oparte na progra-mowaniu dla Win32.

W tym rozdziale zajmiemy się tylko i wyłącznie programowaniem dla platformy .NET orazdokładniej omówimy technologie związane z tą platformą.

Środowisko .NET Framework obejmuje swym zakresem wszystkie warstwy tworzenia opro-gramowania: od systemu operacyjnego po bibliotekę klas (jak np. Windows Forms).

W tym rozdziale:

� przedstawię szczegóły działania środowiska CLR,

� omówię nowe pojęcia: kod zarządzany i niezarządzany,

� opiszę, czym jest CLS i CTS.

Środowisko CLRWspólne środowisko uruchomieniowe (CLR) stanowi podstawowy element platformy .NET Fra-mework. W momencie uruchomienia aplikacji .NET, CLR odpowiada za jej sprawne wykonanie(załadowanie do pamięci), przydział pamięci, obsługę błędów itp. W standardowym modeluprogramowania — Win32, za tego typu czynności odpowiadał zwyczajnie system operacyjny(Windows). Po zainstalowaniu na komputerze środowiska .NET Framework, odpowiednie bi-blioteki systemu pozwalają na rozpoznanie, czy dany program jest aplikacją Win32, czy też

228 Część I

.NET. Jeżeli jest to aplikacja .NET, uruchomione zostaje środowisko CLR, pod kontrolą któregodziała program. To, co dzieje się „w tle” nas nie interesuje, nie trzeba się tym przejmować.

W jaki jednak sposób system operacyjny rozpoznaje, która aplikacja jest aplikacją .NET? Dziejesię tak dlatego, że aplikacja wykonywalna .NET (plik .exe) jest inaczej zbudowana niż standar-dowe programy Win32. Tę kwestię postaram się wyjaśnić w paru kolejnych podrozdziałach.

Kod pośredni IL

Kompilatory działające pod kontrolą systemu Windows kompilują kody źródłowe do postaci32-bitowego kodu maszynowego. W efekcie otrzymujemy aplikacje .exe czy biblioteki .dll. Takisposób uniemożliwia przeniesienie aplikacji na urządzenia czy systemy, które działają podkontrolą innych procesorów. Może także stwarzać problemy z innymi wersjami systemu ope-racyjnego (w tym wypadku Windows). Wszystko dlatego, że aplikacje wykonywalne komunikująsię z API, które może różnić się w poszczególnych wersjach systemu.

Rozwiązaniem tego problemu jest kompilacja programu do kodu pośredniego, nazywanego Com-mon Language Infrastructure (z ang. architektura wspólnego języka, CLI).

Wskazówka

CLI na platformie .NET jest często nazywany MSIL (Microsoft Intermediate Language)lub po prostu — IL.

Kod pośredni IL przypomina kod języka Asembler:

����������� ������ ������������������������������������������������������������������������������������������� !������ ���"��#��$%&����'�������!��$%&���!'�����������$%&��!(��$%&����'����������$%&���)'�����������������*+ ����,+ ��������������-������������������������������������.��/����0.��/���!''������������$%&���1'�����������$%&��!(��$%&����'����������$%&����'�����������������*+ ����,+ ��������������-������������������������������������.��/����0.��/���!''������������$%&��!!'�������������������������*+ ����,+ ��������������-�������������''�����������$%&��!('����������$%&��!2'�������!��$%&��!3'�����������������������������������������������*+ �����.����4��/����,+ �����.����4��/�����/���''���������������$%&��!�'�����5�����������������0.��/���!''�������

Rozdział 5. � Przegląd .NET Framework 229

W takiej postaci kod IL jest kompilowany do kodu maszynowego, który może już zostać uru-chomiony. Tak właśnie działa język Java, z którego pomysł zaczerpnął Microsoft projektującplatformę .NET.

Wszystko to jest możliwe dzięki tzw. maszynom wirtualnym, czyli aplikacjom przystosowanymdo konkretnej wersji systemu/procesora. Środowisko CLR odpowiada za kompilację kodu po-średniego na maszynowy, w trakcie uruchamiania aplikacji. Dzieje się to jednak na tyle szybko,że dla użytkownika jest to niezauważalne.

Wskazówka

Możliwe jest również jednorazowe skompilowanie danego programu od razu na kodmaszynowy, dzięki temu przy każdym uruchamianiem programu są oszczędzanezasoby systemowe, potrzebne do uruchomienia kompilatora JIT (ang. Just-In-Time).

Kod zarządzany i niezarządzany

Platforma .NET definiuje dwa nowe pojęcia: kod zarządzany (managed code) oraz niezarzą-dzany (ang. unmanaged code), które są istotne z punktu widzenia CLR. Kod niezarządzanyjest zwykłym kodem, wykonywanym poza środowiskiem .NET, zatem określenie to oznacza stareaplikacje kompilowane dla środowiska Win32. Natomiast — jak nietrudno się domyśleć — kodzarządzany jest wykonywany pod kontrolą CLR.

Zmiany w Delphi 2005 oraz w .NET w porównaniu z Win32 są na tyle duże, że problememstaje się współdziałanie obu rodzajów aplikacji (aplikacji .NET oraz Win32), jak również ko-rzystanie z zasobów starszych aplikacji Win32 — np. bibliotek DLL. Dlatego też w .NETw tym celu wykorzystuje się mechanizm zwany marshalingiem 1, który jest związany z określe-niem sposobu, w jaki dane mają być przekazywane z kodu niezarządzanego do zarządzanego.Tym jednak nie należy się teraz przejmować — podejmę ten temat w rozdziale 11.

Moduł zarządzany

Każdy moduł zarządzany jest przenośnym plikiem systemu Windows. Moduły zarządzane sągenerowane przez kompilatory zgodne z platformą .NET, a w ich skład wchodzą następująceelementy:

� Nagłówek PE (ang. PE Header) — standardowy nagłówek pliku wykonywalnegosystemu Windows,

� Nagłówek CLR (ang. CLR Header) — dodatkowe informacje, charakterystycznedla danego środowiska CLR,

1Niestety nie znalazłem dobrego, polskiego odpowiednika tego słowa, które w pełni oddawałoby istotę

rzeczy.

230 Część I

� Metadane (ang. metadata) — informacje o typach modułów używanych w programieoraz ich wzajemnych powiązaniach,

� Kod zarządzany (ang. managed code) — wspólny kod generowany przez kompilatory.NET (kod IL).

Wskazówka

Informacje o metadanych znajdują się w 8. rozdziale tej książki.

Podzespoły

To jest bardzo ważne pojęcie, którym nieraz będę się posługiwał w tej książce. W najprostszymujęciu podzespołem (ang. assembly) nazywamy każdą aplikację działającą pod kontrolą .NET.

Każdy moduł zarządzany wymaga podzespołu. Jeden podzespół może zawierać jeden lub więcejmodułów zarządzanych. Podzespół może zawierać również inne pliki, takie jak dokumenty,grafikę itp.

Na tym etapie zagadnienie to może wydać się Czytelnikowi niezwykle skomplikowane. Pod-zespoły mogą zawierać jeden lub więcej modułów zarządzanych, w których z kolei znajdująsię kod zarządzany oraz metadane.

Działanie CLR

Wspomniałem wcześniej, że CLR zajmuje się uruchamianiem aplikacji napisanej w .NET orazogólnie — zarządzaniem procesem jej działania. Prześledźmy proces uruchamiania aplikacjiw .NET. Oto kilka etapów, które przechodzi aplikacja od momentu, gdy użytkownik zarządzijej uruchomienie:

� ładowanie klasy (ang. Class Loader),

� weryfikacja,

� kompilacja.

Class Loader

Dotychczas jedynym formatem, rozpoznawanym przez systemy Windows jako aplikacja wyko-nywalna, był stary format PE. Stary format PE zawierał skompilowany kod maszynowy apli-kacji. Instalując bibliotekę .NET w systemie, dodawane jest uaktualnienie mówiące o nowymformacie PE, dzięki czemu system jest w stanie rozpoznać również nowy format plików wy-konywalnych.

Skoro teraz aplikacja .NET jest rozpoznawana przez system, ten w momencie jej uruchamianiaoddaje sterowanie do CLR. CLR odczytuje zawartość pliku oraz listę klas używanych w programie.

Rozdział 5. � Przegląd .NET Framework 231

Lista klas jest odczytywana z przeróżnych miejsc — szczególnie jest to manifest oraz metadane,a także plik .config, który może być dołączany do programu. Po odczytaniu klas następuje obli-czenie ilości pamięci potrzebnej, aby załadować klasy. Następnie klasy są ładowane do pamięci.

Weryfikacja

Po załadowaniu klas do pamięci zawartość programu, czyli metadane oraz kod IL, zostają pod-dane weryfikacji. Jest to ważny etap, gdyż w przypadku niepowodzenia kod IL nie zostanieprzekazany kompilatorowi JIT.

Kompilator JIT

Kompilator JIT odgrywa znaczącą rolę w procesie uruchamiania aplikacji. Po weryfikacji kodujest on przekazywany do kompilatora, który kompiluje go do kodu maszynowego, a następniegotowy program zostaje załadowany do pamięci. Znajduje się on w tej pamięci do czasu zakoń-czenia działania aplikacji.

System CTSWiadomo już, czym są typy języka programowania. Wspólny system typów (Common Type Sys-tem) jest bogatym zbiorem typów opracowanych przez firmę Microsoft na potrzeby .NET.W rzeczywistości, podczas programowania w Delphi z użyciem VCL.NET lub WinForms i zasto-sowaniem typu �������, korzystamy z typu ��������� , który należy do specyfikacji CTS.

Otwórzmy teraz okno repozytorium i wybierzmy kategorię Delphi for .NET Projects, a następnieConsole Application. Można zadeklarować dwie zmienne i spróbować skompilować program:

����$!�'�$������6��$#�'�+ �����$���#6

Kompilacja odbędzie się bezproblemowo. Typy ������� oraz ��������� są sobie równoważne.Typy takie jak ������� czy ������ są zachowane ze względu na kompatybilność projektów ze star-szymi wersjami Delphi. Programista nie musi uczyć się nazw nowych typów — wykorzystuje na-zwy dobrze mu znane i kompatybilne z .NET. Typy języka Delphi oraz ich odpowiedniki w CTSznajdują się w tabeli 5.1.

System CTS jest składnikiem CLR, odpowiada za weryfikowanie i zarządzanie tymi typami.Wszystkie typy, również te przedstawione w tabeli 5.1 wywodzą się z głównej klasy — ������������.

232 Część I

Tabela 5.1. Typy CTS

Typ Delphi Typ .NET Framework

+����� + �����+�����

7����� + �����7�����

��� + ��������

������ + �����������

$������ + �����$���#

+������ + �����$��!(

.��� + �����8$��!(

$��() + �����$��()

7 �� + �����7 ��

Specyfikacja CLSDo tej pory możliwości w komunikowaniu się pomiędzy aplikacjami były nieco ograniczone.Kod aplikacji w środowisku Win32 może być dzielony pomiędzy biblioteki DLL. Po umiesz-czeniu funkcji w bibliotece DLL, istnieje możliwość ich eksportu, co z kolei pozwala na ichwykorzystanie przez aplikacje EXE.

W środowisku .NET aplikacje mają pełną zdolność do komunikowania się. Jeden podzespół możewykorzystywać funkcje drugiego i na odwrót. Wszystko to dzięki kompilacji do kodu pośred-niego IL, do którego są kompilowane wszystkie aplikacje, bez względu na to, czy są pisanew C#, czy w Delphi. Tak więc, jeżeli napisano program do szyfrowania danych, można (jeżelitylko programista tego zechce) udostępnić jego funkcjonalność innym podzespołom. Praktyczneprzykłady tego zagadnienia zaprezentuję w rozdziale 8.

Nie tylko język pośredni ma tu znaczenie, ale również specyfikacja CLS (ang. Common Lan-guage Specification, czyli wspólna specyfikacja języków). Jest to zestaw reguł określającychnazewnictwo oraz inne kluczowe elementy języka programowania. Jeśli projektanci językaprogramowania, który docelowo ma działać dla .NET, chcą, aby był on kompatybilny z CLSoraz miał zdolność do komunikowania się z pozostałymi podzespołami, muszą dostosować swójprodukt do określonych wymagań.

Wskazówka

Na stronach firmy Microsoft można także znaleźć dodatkowe informacje na tematspecyfikacji CLS:

http://msdn.microsoft.com/net/ecma/.

Rozdział 5. � Przegląd .NET Framework 233

Biblioteka klasCzytelnik wciąż spotyka się ze słowami: klasa, obiekt, których zresztą często używam w tymrozdziale. Wspominałem wcześniej, że na platformie Win32 aplikacje korzystały z WinAPI,czyli z zestawu funkcji pomocnych przy programowaniu. Wkrótce po tym pojawiły się takiebiblioteki jak VCL, które jeszcze bardziej ułatwiały programowanie (VCL korzysta z funkcjiWinAPI).

Biblioteka klas .NET Framework (.NET Framework Class Library) stanowi zestaw setek klas,bibliotek, interfejsów, typów, które mają zastąpić WinAPI. W założeniu FCL ma połączyć funk-cjonalność WinAPI oraz dodatkowych bibliotek, takich jak VCL czy MFC (ang. Microsoft Fun-dation Classes).

Dla przykładu — w rozdziale 3. korzystaliśmy z funkcji �������, ������, które są funkcjamiDelphi umożliwiającymi operacje na konsoli. Odpowiednikiem tych funkcji na platformie .NET jestklasa ������ oraz metody ��������� oraz ��������. Oto prosty przykład programu, który pobierainformacje o imieniu użytkownika. Program korzysta z funkcji konsolowych biblioteki FCL:

�������9��:����6

�;<990=9>��?@+?%>5

����+�'�+ �����+�����6

���������������.����%����A���BCD�9��:��4�:�����EDA�6��+�'F���������G��%���6

����������.����%����A���BC�A�H�+�H�AD�I���������E�<��DA�6����������G��%���6����