SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   C++Builder.
                                         Kompendium programisty
           KATALOG KSI¥¯EK
                                         Autor: Andrzej Daniluk
                      KATALOG ONLINE     ISBN: 83-7361-028-6
                                         Format: B5, stron: 496
       ZAMÓW DRUKOWANY KATALOG


              TWÓJ KOSZYK                Jêzyk C++ od czasu jego zdefiniowania przez Bjarne Stroustrupa by³ kilkakrotnie
                                         uaktualniany w latach 80. i 90. XX wieku. Chocia¿ C++Builder nie jest dok³adnym
                    DODAJ DO KOSZYKA     odzwierciedleniem standardu ANSI jêzyka C++, to obecna jego wersja przygotowana
                                         przez firmê Borland jest stabilna i zgodna z oczekiwaniami programistów. Borland
                                         C++Builder stanowi po³¹czenie nowoczesnego jêzyka programowania, jakim jest C++,
         CENNIK I INFORMACJE             biblioteki komponentów wizualnych VCL/CLX oraz zintegrowanego rodowiska
                                         programisty IDE.
                   ZAMÓW INFORMACJE      „C++Builder. Kompendium programisty” omawia podstawy programowania w C++
                     O NOWO CIACH
                                         ze szczególnym uwzglêdnieniem mo¿liwo ci oferowanych przez kompilator Borland
                                         C++Builder. Poznasz wiêc nie tylko sam jêzyk, ale nauczysz siê pisaæ w nim wydajne
                       ZAMÓW CENNIK      i przeno ne aplikacje, dzia³aj¹ce zarówno w rodowisku linuksowym, jak i w Windows.
                                         Omówione zagadnienia obejmuj¹:
                 CZYTELNIA                  • Opis zintegrowanego rodowiska programisty C++Buildera
                                            • Podstawy jêzyka C++
          FRAGMENTY KSI¥¯EK ONLINE          • Wczesne oraz pó ne wi¹zanie — wstêp do programowania zorientowanego
                                              obiektowo
                                            • Mo¿liwo ci C++Buildera w zakresie pos³ugiwania siê tablicami ró¿nego typu
                                            • Zaawansowane operatory rzutowania typów
                                            • Informacje czasu wykonania
                                            • Obs³ugê wyj¹tków
                                            • Obs³ugê plików
                                            • £añcuchy ANSI
                                            • Zmienne o typie modyfikowalnym w czasie wykonywania programu
                                            • Funkcje FPU i systemowe
                                            • Elementy wielow¹tkowo ci — wykorzystanie C++ oraz C++Buildera
                                              w nowoczesnych, wielow¹tkowych systemach operacyjnych
Wydawnictwo Helion
ul. Chopina 6                               • Liczby pseudolosowe i konwersje wielko ci liczbowych
44-100 Gliwice                              • Wprowadzenie do grafiki
tel. (32)230-98-63                          • Komponentowy model C++Buildera i biblioteki DLL
e-mail: helion@helion.pl                    • Biblioteka CLX -- projektowanie aplikacji przeno nych pomiêdzy systemami
                                              operacyjnymi Windows i Linux
Spis treści
              Wstęp...................................................................................................................................................................9
              O Autorze ........................................................................................................................................................12
Rozdział 1.   Środowisko programisty IDE Borland C++Builder ...................................................................... 13
              Struktura głównego menu .................................................................................................15
                  Menu File ....................................................................................................................16
                  Menu Edit....................................................................................................................18
                  Menu Search ...............................................................................................................21
              Pasek narzędzi — Speed Bar ............................................................................................34
                  Inspektor obiektów — Object Inspector .....................................................................35
                  Widok drzewa obiektów — Object Tree View...........................................................36
              Ogólna postać programu pisanego w C++ ........................................................................37
                  Funkcja main() ............................................................................................................38
                  Dyrektywa #include i prekompilacja ..........................................................................39
                  Konsolidacja ...............................................................................................................40
                  Konfiguracja opcji projektu ........................................................................................40
                  Uruchamiamy program ...............................................................................................42
              Ogólna postać programu pisanego w C++Builderze ........................................................43
                  Formularz....................................................................................................................44
                  Zdarzenia.....................................................................................................................46
              Konsola czy formularz? ....................................................................................................48
              Podsumowanie ..................................................................................................................49

Rozdział 2.   Podstawy języka C++................................................................................................................................. 51
              Dyrektywy preprocesora ...................................................................................................51
                 Dyrektywa #include ....................................................................................................51
                 Dyrektywa #define......................................................................................................52
                 Dyrektywa #undef.......................................................................................................52
                 Dyrektywa #pragma hdrstop.......................................................................................52
                 Dyrektywa #pragma argsused.....................................................................................52
                 Dyrektywa #pragma inline..........................................................................................52
                 Dyrektywa #pragma option.........................................................................................53
4                                                                                  C++Builder. Kompendium programisty

        Dyrektywa #pragma message .....................................................................................53
        Dyrektywa #pragma package(smart_init)...................................................................53
        Dyrektywa #pragma resource „nazwa_pliku” ............................................................53
        Dyrektywa #error ........................................................................................................54
        Dyrektywy kompilacji warunkowej............................................................................54
    Kategorie typów danych....................................................................................................56
    Podstawowe proste typy całkowite i rzeczywiste .............................................................56
        Typ int.........................................................................................................................56
        Typ double ..................................................................................................................57
    Modyfikatory typów..........................................................................................................58
    Typy danych Windows......................................................................................................59
    Typ Currency.....................................................................................................................60
    Typ void ............................................................................................................................61
    Typy logiczne....................................................................................................................61
    Typy znakowe ...................................................................................................................61
    Typy łańcuchowe ..............................................................................................................62
    Modyfikatory dostępu const i volatile...............................................................................63
    Specyfikatory klas pamięci ...............................................................................................63
        Specyfikator extern .....................................................................................................64
        Specyfikator static.......................................................................................................64
        Specyfikator register ...................................................................................................64
    Operatory...........................................................................................................................65
    Typ wyliczeniowy .............................................................................................................68
    Słowo kluczowe typedef ...................................................................................................68
    Typ zbiorowy ....................................................................................................................69
    Deklarowanie tablic...........................................................................................................70
    Instrukcje sterujące przebiegiem programu ......................................................................71
        Instrukcja warunkowa if…else ...................................................................................72
        Instrukcja wyboru switch…case…break ....................................................................73
        Instrukcja for...............................................................................................................74
        Nieskończona pętla for ...............................................................................................75
        Instrukcja iteracyjna do…while..................................................................................76
        Instrukcja iteracyjna while..........................................................................................77
        Instrukcja przerwania wykonywania pętli break ........................................................78
        Funkcja przerwania programu exit()...........................................................................78
        Funkcja przerwania programu abort() ........................................................................79
        Instrukcja kontynuacji programu continue .................................................................79
    Funkcje w C++..................................................................................................................80
        Rekurencja ..................................................................................................................81
        Funkcje przeładowywane............................................................................................83
        Niejednoznaczność .....................................................................................................85
        Konwencje wywoływania funkcji...............................................................................86
        Specyfikatory konsolidacji funkcji .............................................................................87
    Wskazania i adresy............................................................................................................88
        Operatory wskaźnikowe..............................................................................................90
        Wskaźniki i tablice......................................................................................................90
        Wielokrotne operacje pośrednie .................................................................................92
        Operatory new i delete ................................................................................................94
        Dereferencja wskaźnika ..............................................................................................95
        Wskaźniki ze słowem kluczowym const ....................................................................96
        Wskaźniki do funkcji ..................................................................................................97
    Odwołania .......................................................................................................................101
        Parametry odwołaniowe............................................................................................104
        Zwracanie odwołań przez funkcje ............................................................................105
Spis treści                                                                                                                                                                       5
              Struktury..........................................................................................................................106
                  Przekazywanie struktur funkcjom.............................................................................108
                  Struktury zagnie d one.............................................................................................109
                  Wskaźniki do struktur ...............................................................................................111
                  Samodzielne tworzenie plików nagłówkowych........................................................112
              Unie .................................................................................................................................114
              Klasy w C++ ...................................................................................................................115
                  Konstruktor i destruktor............................................................................................119
                  Inne spojrzenie na klasy. Własności .........................................................................121
                  Funkcje ogólne..........................................................................................................124
                  Przeładowywanie funkcji ogólnych..........................................................................125
                  Dziedziczenie............................................................................................................127
              Funkcje składowe klas ze specyfikatorami const i volatile.............................................131
                  Funkcje wewnętrzne .................................................................................................133
                  Realizacja przekazywania egzemplarzy klas funkcjom............................................135
                  Wskaźniki do egzemplarzy klas................................................................................136
                  Operatory .* oraz ->*................................................................................................138
                  Wskaźnik this............................................................................................................139
              Przeładowywanie operatorów .........................................................................................140
                  Przeładowywanie jednoargumentowych operatorów ++ oraz – –............................141
                  Przeładowywanie operatorów ! oraz != ....................................................................144
                  Przeładowywanie dwuargumentowego operatora arytmetycznego +.......................147
                  Przeładowywanie operatora &..................................................................................149
                  Przeładowywanie operatora indeksowania tablic [ ] ................................................150
              Klasy wejścia-wyjścia języka C++ .................................................................................153
                  Obsługa plików z wykorzystaniem klasy ios............................................................155
                  Tablicowe operacje wejścia-wyjścia.........................................................................157
              Podsumowanie ................................................................................................................160

Rozdział 3.   Wczesne oraz późne wiązanie................................................................................................................161
              Odwołania i wskaźniki do klas pochodnych ...................................................................161
              Funkcje wirtualne w C++................................................................................................163
              Wirtualne klasy bazowe ..................................................................................................167
              Funkcje wirtualne w C++Builderze ................................................................................170
              Klasy abstrakcyjne w stylu biblioteki VCL ....................................................................173
              Specyfikator __closure....................................................................................................175
              Obszary nazw ..................................................................................................................178
              Operator __classid...........................................................................................................179
              Funkcja Register() ...........................................................................................................179
              Podsumowanie ................................................................................................................179

Rozdział 4.   Tablice.............................................................................................................................................................181
              Tablice dynamicznie alokowane w pamięci....................................................................181
              Tablice dynamiczne.........................................................................................................184
              Tablice otwarte................................................................................................................187
              Tablice struktur ...............................................................................................................189
                 Tablice wskaźników do struktur ...............................................................................191
                 Odwołania do elementów tablicy wskaźników do struktur ......................................194
              Podsumowanie ................................................................................................................197
6                                                                                                          C++Builder. Kompendium programisty

Rozdział 5.    Zaawansowane operatory rzutowania typów................................................................................199
               Operator static_cast .........................................................................................................199
               Operator dynamic_cast....................................................................................................200
               Operator const_cast .........................................................................................................203
               Operator reinterpret_cast.................................................................................................205
               Podsumowanie ................................................................................................................207

Rozdział 6.    Informacja czasu wykonania.................................................................................................................209
               Klasa TObject..................................................................................................................210
               Hierarchia własności komponentów VCL ......................................................................213
               Czas ycia komponentów................................................................................................214
               Moduł typeinfo.h.............................................................................................................215
               Identyfikacja typów czasu wykonywania w oparciu o IDE............................................217
               Tablica metod wirtualnych..............................................................................................218
               Klasa TControl ................................................................................................................219
               Modyfikator __rtti ...........................................................................................................221
               Podsumowanie ................................................................................................................223

Rozdział 7.    Obsługa wyjątków.................................................................................................................................... 225
               Standardowa obsługa wyjątków......................................................................................225
               Strukturalna obsługa wyjątków.......................................................................................228
               Klasy wyjątków...............................................................................................................230
               Zmienne globalne __throwExceptionName, __throwFileName i __throwLineNumber ...234
               Zapisywanie nieobsłu onych wyjątków..........................................................................236
               Transformowanie wyjątków Windows ...........................................................................238
               Podsumowanie ................................................................................................................240

Rozdział 8.    Obsługa plików .......................................................................................................................................... 241
               Klasy TDirectoryListBox, TFileListBox i TDriveComboBox .......................................241
               Klasy TActionList, TOpenDialog i TSaveDialog...........................................................243
               Własność Options klas TOpenDialog i TSaveDialog .....................................................249
               Klasy TOpenPictureDialog i TSavePictureDialog..........................................................250
               Klasy TActionManager i TActionMainMenuBar ...........................................................253
               Moduł sysutils .................................................................................................................257
                   Operacje na plikach...................................................................................................258
                   Atrybuty pliku...........................................................................................................268
                   Operacje na dyskach .................................................................................................272
                   Operacje na nazwach plików ....................................................................................273
               Windows API ..................................................................................................................274
               Klasa TMemoryStream ...................................................................................................280
               Klasa TFileStream...........................................................................................................282
               Przesyłanie plików przez sieć .........................................................................................285
               Drukowanie .....................................................................................................................289
               Podsumowanie ................................................................................................................291

Rozdział 9.    Łańcuchy ANSI......................................................................................................................................... 293
               Podsumowanie ................................................................................................................301

Rozdział 10.   Zmienne o typie modyfikowalnym w czasie wykonywania programu .............................303
               Struktura TVarData .........................................................................................................303
               Klasa TCustomVariantType............................................................................................307
               Moduł variants.................................................................................................................309
Spis treści                                                                                                                                                               7
                      Tablice wariantowe .........................................................................................................310
                      Wariantowe tablice otwarte.............................................................................................316
                      Klient OLE ......................................................................................................................318
                      Podsumowanie ................................................................................................................321

Rozdział 11.          Funkcje FPU i systemowe..................................................................................................................... 323
                      Funkcje FPU....................................................................................................................323
                      Struktura SYSTEM_INFO..............................................................................................329
                      Klasa THeapStatus ..........................................................................................................332
                      Identyfikator GUID .........................................................................................................335
                      Podsumowanie ................................................................................................................337

Rozdział 12.          Elementy wielowątkowości .................................................................................................................. 339
                      Wątki i procesy................................................................................................................339
                      Funkcja _beginthread() ...................................................................................................340
                      Funkcja _beginthreadNT() ..............................................................................................343
                      Funkcja _beginthreadex()................................................................................................348
                      Funkcja BeginThread() ...................................................................................................349
                      Zmienne lokalne wątku ...................................................................................................353
                      Klasa TThread .................................................................................................................355
                         Metody ......................................................................................................................355
                         Własności..................................................................................................................356
                      Zmienna IsMultiThread...................................................................................................361
                      Podsumowanie ................................................................................................................361

Rozdział 13.          Liczby pseudolosowe................................................................................................................................ 363
                      Funkcje randomize() i random() .....................................................................................364
                      Losowanie z powtórzeniami............................................................................................368
                      Losowanie bez powtórzeń...............................................................................................371
                      Generatory częściowo uporządkowane...........................................................................377
                      Podsumowanie ................................................................................................................384

Rozdział 14. Konwersje wielkości liczbowych..........................................................................................................385
                      Własności ........................................................................................................................402
                      Metody ............................................................................................................................403
                      Podsumowanie ................................................................................................................409

Rozdział 15.          Wprowadzenie do grafiki .......................................................................................................................411
                      Barwne modele................................................................................................................412
                      Płótno ..............................................................................................................................415
                      Mapy bitowe....................................................................................................................419
                      JPEG................................................................................................................................422
                      Obraz video .....................................................................................................................426
                      Drukowanie grafiki .........................................................................................................429
                      Podsumowanie ................................................................................................................430

Rozdział 16.          Komponentowy model C++Buildera..................................................................................................431
                      Tworzymy nowy komponent ..........................................................................................431
                      Modyfikacja istniejącego komponentu z biblioteki VCL/CLX ......................................437
                      Komponenty graficzne ....................................................................................................443
                      Podsumowanie ................................................................................................................447
8                                                                                                              C++Builder. Kompendium programisty

Rozdział 17.   Biblioteki DLL ..........................................................................................................................................449
               Budowanie DLL-i ...........................................................................................................449
               Funkcja DllEntryPoint()..................................................................................................453
               Bazowe adresy ładowania ...............................................................................................455
               Pakiety.............................................................................................................................455
               Określanie adresów funkcji.............................................................................................459
               Podsumowanie ................................................................................................................461

Rozdział 18.   Biblioteka CLX..........................................................................................................................................463
               Zmiany w bibliotece uruchomieniowej...........................................................................463
               Pliki i katalogi .................................................................................................................465
               Znaki wielobajtowe .........................................................................................................465
               Przykłady wykorzystania elementów biblioteki CLX ....................................................466
                   Komponenty klas TTimer i TLCDNumber ..............................................................467
                   Komponenty klas TActionList, TImageList, TMainMenu, TSaveDialog,
                      TOpenDialog, TStatusBar i TToolBar...................................................................469
               Podsumowanie ................................................................................................................470

               Literatura...................................................................................................................................................... 471
               Skorowidz ....................................................................................................................................................473
Zaawansowane operatory
                            rzutowania typów
Oprócz tradycyjnych operatorów rzutowania typów zaczerpniętych z języka C, w C++ zdefi-
niowano dodatkowo cztery operatory rzutowania typów o nazwach: UVCVKEAECUV, F[PCOKEA
ECUV, EQPUVAECUV oraz TGKPVGTRTGVAECUV. Ogólne postaci omawianych operatorów wyglądają
następująco:
    UVCVKEAECUV 6[R 
CTI
    F[PCOKEAECUV 6[R 
CTI
    EQPUVAECUV 6[R 
CTI
    TGKPVGTRTGVAECUV 6[R 
CTI

Słowo 6[R oznacza docelowy typ rzutowania, zaś CTI (argument) — obiekt, któremu przypi-
sujemy nowy typ danych.




Operator static_cast
Operator UVUVKEAECUV wykonuje tzw. rzutowanie niepolimorficzne, co między innymi oznacza
mo liwość wykonania ka dej standardowej konwersji typów bez konieczności sprawdzania jej
poprawności.

Jako prosty przykład wykonania niepolimorficznego rzutowania typów rozpatrzymy prostą
funkcję typu KPV z argumentem typu XQKF
, której jedynym celem będzie zamiana małej litery
na du ą. Poniewa dane typu XQKF
nie mogą wskazywać na konkretne obiekty, nale y wyko-
rzystać odpowiedni operator rzutowania typów, tak jak pokazano to na listingu 5.1, gdzie przed-
stawiono kod głównego modułu projektu Projekt_R5_01.bpr.
200                                                           C++Builder. Kompendium programisty

W omawianym przykładzie dzięki operatorowi UVCVKEAECUV uzyskamy wskaźnik NGV do typu
KPV w funkcji ECRKVCN
 ze wskaźnika NGVVGT do zupełnie innego typu bazowego będącego jej
argumentem.

Listing 5.1. Rzutowanie wskaźnika i jego dereferencja
       KPENWFG XENJ
       RTCIOC JFTUVQR
       KPENWFG 7PKVA4AJ
       RTCIOC RCEMCIG
UOCTVAKPKV
       RTCIOC TGUQWTEG
FHO

      6(QTO
(QTO

      KPV AAHCUVECNN ECRKVCN
XQKF
NGVVGT
      ]
         TWVQYCPKG YUMC PKMC PC RTCYKF QY[ V[R FCP[EJ
        KPV
NGV  UVCVKEAECUVKPV
NGVVGT
         FGTGHGTGPELC YUMC PKMC
        TGVWTP VQWRRGT

Weitere ähnliche Inhalte

Was ist angesagt?

C++. Programowanie zorientowane obiektowo. Vademecum profesjonalisty
C++. Programowanie zorientowane obiektowo. Vademecum profesjonalistyC++. Programowanie zorientowane obiektowo. Vademecum profesjonalisty
C++. Programowanie zorientowane obiektowo. Vademecum profesjonalistyWydawnictwo Helion
 
Visual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstawVisual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstawWydawnictwo Helion
 
Visual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyVisual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyWydawnictwo Helion
 
PHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIPHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIWydawnictwo Helion
 
C++. Kruczki i fortele w programowaniu
C++. Kruczki i fortele w programowaniuC++. Kruczki i fortele w programowaniu
C++. Kruczki i fortele w programowaniuWydawnictwo Helion
 
Delphi 7. Kompendium programisty
Delphi 7. Kompendium programistyDelphi 7. Kompendium programisty
Delphi 7. Kompendium programistyWydawnictwo Helion
 
101 praktycznych skryptów na stronę WWW. Wydanie II
101 praktycznych skryptów na stronę WWW. Wydanie II101 praktycznych skryptów na stronę WWW. Wydanie II
101 praktycznych skryptów na stronę WWW. Wydanie IIWydawnictwo Helion
 
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówC++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówWydawnictwo Helion
 
Delphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaDelphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaWydawnictwo Helion
 
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...Wydawnictwo Helion
 
C++. Inżynieria programowania
C++. Inżynieria programowaniaC++. Inżynieria programowania
C++. Inżynieria programowaniaWydawnictwo Helion
 
C++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalistyC++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalistyWydawnictwo Helion
 
C++Builder 2006. Ćwiczenia praktyczne
C++Builder 2006. Ćwiczenia praktyczneC++Builder 2006. Ćwiczenia praktyczne
C++Builder 2006. Ćwiczenia praktyczneWydawnictwo Helion
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówWydawnictwo Helion
 

Was ist angesagt? (20)

ABC Delphi 2006
ABC Delphi 2006ABC Delphi 2006
ABC Delphi 2006
 
C++. Programowanie zorientowane obiektowo. Vademecum profesjonalisty
C++. Programowanie zorientowane obiektowo. Vademecum profesjonalistyC++. Programowanie zorientowane obiektowo. Vademecum profesjonalisty
C++. Programowanie zorientowane obiektowo. Vademecum profesjonalisty
 
Visual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstawVisual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstaw
 
Visual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyVisual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programisty
 
PHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIPHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie II
 
C++Builder 6 i bazy danych
C++Builder 6 i bazy danychC++Builder 6 i bazy danych
C++Builder 6 i bazy danych
 
Programowanie. Od podstaw
Programowanie. Od podstawProgramowanie. Od podstaw
Programowanie. Od podstaw
 
C#. Programowanie
C#. ProgramowanieC#. Programowanie
C#. Programowanie
 
C++. Kruczki i fortele w programowaniu
C++. Kruczki i fortele w programowaniuC++. Kruczki i fortele w programowaniu
C++. Kruczki i fortele w programowaniu
 
Delphi 7. Kompendium programisty
Delphi 7. Kompendium programistyDelphi 7. Kompendium programisty
Delphi 7. Kompendium programisty
 
101 praktycznych skryptów na stronę WWW. Wydanie II
101 praktycznych skryptów na stronę WWW. Wydanie II101 praktycznych skryptów na stronę WWW. Wydanie II
101 praktycznych skryptów na stronę WWW. Wydanie II
 
C++. Sztuka programowania
C++. Sztuka programowaniaC++. Sztuka programowania
C++. Sztuka programowania
 
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówC++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
 
Delphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaDelphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązania
 
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...
 
C++. Inżynieria programowania
C++. Inżynieria programowaniaC++. Inżynieria programowania
C++. Inżynieria programowania
 
C++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalistyC++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalisty
 
C++Builder 2006. Ćwiczenia praktyczne
C++Builder 2006. Ćwiczenia praktyczneC++Builder 2006. Ćwiczenia praktyczne
C++Builder 2006. Ćwiczenia praktyczne
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistów
 
C# i ASP.NET. Szybki start
C# i ASP.NET. Szybki startC# i ASP.NET. Szybki start
C# i ASP.NET. Szybki start
 

Andere mochten auch

Red Hat Linux 8. Ćwiczenia praktyczne
Red Hat Linux 8. Ćwiczenia praktyczneRed Hat Linux 8. Ćwiczenia praktyczne
Red Hat Linux 8. Ćwiczenia praktyczneWydawnictwo Helion
 
MS Project 2002. Zarządzanie projektami
MS Project 2002. Zarządzanie projektamiMS Project 2002. Zarządzanie projektami
MS Project 2002. Zarządzanie projektamiWydawnictwo Helion
 
Perl. Zaawansowane programowanie
Perl. Zaawansowane programowaniePerl. Zaawansowane programowanie
Perl. Zaawansowane programowanieWydawnictwo Helion
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychWydawnictwo Helion
 
Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 

Andere mochten auch (19)

C#. Leksykon kieszonkowy
C#. Leksykon kieszonkowyC#. Leksykon kieszonkowy
C#. Leksykon kieszonkowy
 
Delphi 7 dla każdego
Delphi 7 dla każdegoDelphi 7 dla każdego
Delphi 7 dla każdego
 
Word. Leksykon kieszonkowy
Word. Leksykon kieszonkowyWord. Leksykon kieszonkowy
Word. Leksykon kieszonkowy
 
Red Hat Linux 8. Ćwiczenia praktyczne
Red Hat Linux 8. Ćwiczenia praktyczneRed Hat Linux 8. Ćwiczenia praktyczne
Red Hat Linux 8. Ćwiczenia praktyczne
 
OpenOffice. Ćwiczenia
OpenOffice. ĆwiczeniaOpenOffice. Ćwiczenia
OpenOffice. Ćwiczenia
 
Transact-SQL. Czarna księga
Transact-SQL. Czarna księgaTransact-SQL. Czarna księga
Transact-SQL. Czarna księga
 
MS Project 2002. Zarządzanie projektami
MS Project 2002. Zarządzanie projektamiMS Project 2002. Zarządzanie projektami
MS Project 2002. Zarządzanie projektami
 
Perl. Zaawansowane programowanie
Perl. Zaawansowane programowaniePerl. Zaawansowane programowanie
Perl. Zaawansowane programowanie
 
Red Hat Linux 8. Biblia
Red Hat Linux 8. BibliaRed Hat Linux 8. Biblia
Red Hat Linux 8. Biblia
 
Java. Potrzaski
Java. PotrzaskiJava. Potrzaski
Java. Potrzaski
 
OpenGL. Programowanie gier
OpenGL. Programowanie gierOpenGL. Programowanie gier
OpenGL. Programowanie gier
 
ABC sam składam komputer
ABC sam składam komputerABC sam składam komputer
ABC sam składam komputer
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danych
 
Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 

Ähnlich wie C++Builder. Kompendium programisty

C++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyC++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyWydawnictwo Helion
 
Aplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. PrzykładyAplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. PrzykładyWydawnictwo Helion
 
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla Windows
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla WindowsVisual C++ 2005 Express Edition. Tworzenie aplikacji dla Windows
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
C++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładuC++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładuWydawnictwo Helion
 
C++ dla programistów gier. Wydanie II
C++ dla programistów gier. Wydanie IIC++ dla programistów gier. Wydanie II
C++ dla programistów gier. Wydanie IIWydawnictwo Helion
 
C++. Wykorzystaj potęgę aplikacji graficznych
C++. Wykorzystaj potęgę aplikacji graficznychC++. Wykorzystaj potęgę aplikacji graficznych
C++. Wykorzystaj potęgę aplikacji graficznychWydawnictwo Helion
 
Asembler. Podręcznik programisty
Asembler. Podręcznik programistyAsembler. Podręcznik programisty
Asembler. Podręcznik programistyWydawnictwo Helion
 

Ähnlich wie C++Builder. Kompendium programisty (16)

C# i .NET
C# i .NETC# i .NET
C# i .NET
 
C++BuilderX. Ćwiczenia
C++BuilderX. ĆwiczeniaC++BuilderX. Ćwiczenia
C++BuilderX. Ćwiczenia
 
C++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyC++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalisty
 
Aplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. PrzykładyAplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. Przykłady
 
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla Windows
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla WindowsVisual C++ 2005 Express Edition. Tworzenie aplikacji dla Windows
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla Windows
 
C++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładuC++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładu
 
C++ dla programistów gier. Wydanie II
C++ dla programistów gier. Wydanie IIC++ dla programistów gier. Wydanie II
C++ dla programistów gier. Wydanie II
 
C#. Wzorce projektowe
C#. Wzorce projektoweC#. Wzorce projektowe
C#. Wzorce projektowe
 
C++Builder 6. Ćwiczenia
C++Builder 6. ĆwiczeniaC++Builder 6. Ćwiczenia
C++Builder 6. Ćwiczenia
 
AutoCAD 2004
AutoCAD 2004AutoCAD 2004
AutoCAD 2004
 
C#. Ćwiczenia
C#. ĆwiczeniaC#. Ćwiczenia
C#. Ćwiczenia
 
C++. Styl programowania
C++. Styl programowaniaC++. Styl programowania
C++. Styl programowania
 
JavaScript i DHTML. Receptury
JavaScript i DHTML. RecepturyJavaScript i DHTML. Receptury
JavaScript i DHTML. Receptury
 
Język C. Programowanie
Język C. ProgramowanieJęzyk C. Programowanie
Język C. Programowanie
 
C++. Wykorzystaj potęgę aplikacji graficznych
C++. Wykorzystaj potęgę aplikacji graficznychC++. Wykorzystaj potęgę aplikacji graficznych
C++. Wykorzystaj potęgę aplikacji graficznych
 
Asembler. Podręcznik programisty
Asembler. Podręcznik programistyAsembler. Podręcznik programisty
Asembler. Podręcznik programisty
 

Mehr von Wydawnictwo Helion

Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieWydawnictwo Helion
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++Wydawnictwo Helion
 
Microsoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga ekspertaMicrosoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga ekspertaWydawnictwo Helion
 
Rewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowejRewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowejWydawnictwo Helion
 
Fotografia cyfrowa. Poradnik bez kantów
Fotografia cyfrowa. Poradnik bez kantówFotografia cyfrowa. Poradnik bez kantów
Fotografia cyfrowa. Poradnik bez kantówWydawnictwo Helion
 
Windows Vista. Naprawa i optymalizacja. Ćwiczenia praktyczne
Windows Vista. Naprawa i optymalizacja. Ćwiczenia praktyczneWindows Vista. Naprawa i optymalizacja. Ćwiczenia praktyczne
Windows Vista. Naprawa i optymalizacja. Ćwiczenia praktyczneWydawnictwo Helion
 

Mehr von Wydawnictwo Helion (20)

Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++
 
Microsoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga ekspertaMicrosoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga eksperta
 
Rewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowejRewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowej
 
Fotografia cyfrowa. Poradnik bez kantów
Fotografia cyfrowa. Poradnik bez kantówFotografia cyfrowa. Poradnik bez kantów
Fotografia cyfrowa. Poradnik bez kantów
 
Windows Vista. Naprawa i optymalizacja. Ćwiczenia praktyczne
Windows Vista. Naprawa i optymalizacja. Ćwiczenia praktyczneWindows Vista. Naprawa i optymalizacja. Ćwiczenia praktyczne
Windows Vista. Naprawa i optymalizacja. Ćwiczenia praktyczne
 

C++Builder. Kompendium programisty

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI C++Builder. Kompendium programisty KATALOG KSI¥¯EK Autor: Andrzej Daniluk KATALOG ONLINE ISBN: 83-7361-028-6 Format: B5, stron: 496 ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK Jêzyk C++ od czasu jego zdefiniowania przez Bjarne Stroustrupa by³ kilkakrotnie uaktualniany w latach 80. i 90. XX wieku. Chocia¿ C++Builder nie jest dok³adnym DODAJ DO KOSZYKA odzwierciedleniem standardu ANSI jêzyka C++, to obecna jego wersja przygotowana przez firmê Borland jest stabilna i zgodna z oczekiwaniami programistów. Borland C++Builder stanowi po³¹czenie nowoczesnego jêzyka programowania, jakim jest C++, CENNIK I INFORMACJE biblioteki komponentów wizualnych VCL/CLX oraz zintegrowanego rodowiska programisty IDE. ZAMÓW INFORMACJE „C++Builder. Kompendium programisty” omawia podstawy programowania w C++ O NOWO CIACH ze szczególnym uwzglêdnieniem mo¿liwo ci oferowanych przez kompilator Borland C++Builder. Poznasz wiêc nie tylko sam jêzyk, ale nauczysz siê pisaæ w nim wydajne ZAMÓW CENNIK i przeno ne aplikacje, dzia³aj¹ce zarówno w rodowisku linuksowym, jak i w Windows. Omówione zagadnienia obejmuj¹: CZYTELNIA • Opis zintegrowanego rodowiska programisty C++Buildera • Podstawy jêzyka C++ FRAGMENTY KSI¥¯EK ONLINE • Wczesne oraz pó ne wi¹zanie — wstêp do programowania zorientowanego obiektowo • Mo¿liwo ci C++Buildera w zakresie pos³ugiwania siê tablicami ró¿nego typu • Zaawansowane operatory rzutowania typów • Informacje czasu wykonania • Obs³ugê wyj¹tków • Obs³ugê plików • £añcuchy ANSI • Zmienne o typie modyfikowalnym w czasie wykonywania programu • Funkcje FPU i systemowe • Elementy wielow¹tkowo ci — wykorzystanie C++ oraz C++Buildera w nowoczesnych, wielow¹tkowych systemach operacyjnych Wydawnictwo Helion ul. Chopina 6 • Liczby pseudolosowe i konwersje wielko ci liczbowych 44-100 Gliwice • Wprowadzenie do grafiki tel. (32)230-98-63 • Komponentowy model C++Buildera i biblioteki DLL e-mail: helion@helion.pl • Biblioteka CLX -- projektowanie aplikacji przeno nych pomiêdzy systemami operacyjnymi Windows i Linux
  • 2. Spis treści Wstęp...................................................................................................................................................................9 O Autorze ........................................................................................................................................................12 Rozdział 1. Środowisko programisty IDE Borland C++Builder ...................................................................... 13 Struktura głównego menu .................................................................................................15 Menu File ....................................................................................................................16 Menu Edit....................................................................................................................18 Menu Search ...............................................................................................................21 Pasek narzędzi — Speed Bar ............................................................................................34 Inspektor obiektów — Object Inspector .....................................................................35 Widok drzewa obiektów — Object Tree View...........................................................36 Ogólna postać programu pisanego w C++ ........................................................................37 Funkcja main() ............................................................................................................38 Dyrektywa #include i prekompilacja ..........................................................................39 Konsolidacja ...............................................................................................................40 Konfiguracja opcji projektu ........................................................................................40 Uruchamiamy program ...............................................................................................42 Ogólna postać programu pisanego w C++Builderze ........................................................43 Formularz....................................................................................................................44 Zdarzenia.....................................................................................................................46 Konsola czy formularz? ....................................................................................................48 Podsumowanie ..................................................................................................................49 Rozdział 2. Podstawy języka C++................................................................................................................................. 51 Dyrektywy preprocesora ...................................................................................................51 Dyrektywa #include ....................................................................................................51 Dyrektywa #define......................................................................................................52 Dyrektywa #undef.......................................................................................................52 Dyrektywa #pragma hdrstop.......................................................................................52 Dyrektywa #pragma argsused.....................................................................................52 Dyrektywa #pragma inline..........................................................................................52 Dyrektywa #pragma option.........................................................................................53
  • 3. 4 C++Builder. Kompendium programisty Dyrektywa #pragma message .....................................................................................53 Dyrektywa #pragma package(smart_init)...................................................................53 Dyrektywa #pragma resource „nazwa_pliku” ............................................................53 Dyrektywa #error ........................................................................................................54 Dyrektywy kompilacji warunkowej............................................................................54 Kategorie typów danych....................................................................................................56 Podstawowe proste typy całkowite i rzeczywiste .............................................................56 Typ int.........................................................................................................................56 Typ double ..................................................................................................................57 Modyfikatory typów..........................................................................................................58 Typy danych Windows......................................................................................................59 Typ Currency.....................................................................................................................60 Typ void ............................................................................................................................61 Typy logiczne....................................................................................................................61 Typy znakowe ...................................................................................................................61 Typy łańcuchowe ..............................................................................................................62 Modyfikatory dostępu const i volatile...............................................................................63 Specyfikatory klas pamięci ...............................................................................................63 Specyfikator extern .....................................................................................................64 Specyfikator static.......................................................................................................64 Specyfikator register ...................................................................................................64 Operatory...........................................................................................................................65 Typ wyliczeniowy .............................................................................................................68 Słowo kluczowe typedef ...................................................................................................68 Typ zbiorowy ....................................................................................................................69 Deklarowanie tablic...........................................................................................................70 Instrukcje sterujące przebiegiem programu ......................................................................71 Instrukcja warunkowa if…else ...................................................................................72 Instrukcja wyboru switch…case…break ....................................................................73 Instrukcja for...............................................................................................................74 Nieskończona pętla for ...............................................................................................75 Instrukcja iteracyjna do…while..................................................................................76 Instrukcja iteracyjna while..........................................................................................77 Instrukcja przerwania wykonywania pętli break ........................................................78 Funkcja przerwania programu exit()...........................................................................78 Funkcja przerwania programu abort() ........................................................................79 Instrukcja kontynuacji programu continue .................................................................79 Funkcje w C++..................................................................................................................80 Rekurencja ..................................................................................................................81 Funkcje przeładowywane............................................................................................83 Niejednoznaczność .....................................................................................................85 Konwencje wywoływania funkcji...............................................................................86 Specyfikatory konsolidacji funkcji .............................................................................87 Wskazania i adresy............................................................................................................88 Operatory wskaźnikowe..............................................................................................90 Wskaźniki i tablice......................................................................................................90 Wielokrotne operacje pośrednie .................................................................................92 Operatory new i delete ................................................................................................94 Dereferencja wskaźnika ..............................................................................................95 Wskaźniki ze słowem kluczowym const ....................................................................96 Wskaźniki do funkcji ..................................................................................................97 Odwołania .......................................................................................................................101 Parametry odwołaniowe............................................................................................104 Zwracanie odwołań przez funkcje ............................................................................105
  • 4. Spis treści 5 Struktury..........................................................................................................................106 Przekazywanie struktur funkcjom.............................................................................108 Struktury zagnie d one.............................................................................................109 Wskaźniki do struktur ...............................................................................................111 Samodzielne tworzenie plików nagłówkowych........................................................112 Unie .................................................................................................................................114 Klasy w C++ ...................................................................................................................115 Konstruktor i destruktor............................................................................................119 Inne spojrzenie na klasy. Własności .........................................................................121 Funkcje ogólne..........................................................................................................124 Przeładowywanie funkcji ogólnych..........................................................................125 Dziedziczenie............................................................................................................127 Funkcje składowe klas ze specyfikatorami const i volatile.............................................131 Funkcje wewnętrzne .................................................................................................133 Realizacja przekazywania egzemplarzy klas funkcjom............................................135 Wskaźniki do egzemplarzy klas................................................................................136 Operatory .* oraz ->*................................................................................................138 Wskaźnik this............................................................................................................139 Przeładowywanie operatorów .........................................................................................140 Przeładowywanie jednoargumentowych operatorów ++ oraz – –............................141 Przeładowywanie operatorów ! oraz != ....................................................................144 Przeładowywanie dwuargumentowego operatora arytmetycznego +.......................147 Przeładowywanie operatora &..................................................................................149 Przeładowywanie operatora indeksowania tablic [ ] ................................................150 Klasy wejścia-wyjścia języka C++ .................................................................................153 Obsługa plików z wykorzystaniem klasy ios............................................................155 Tablicowe operacje wejścia-wyjścia.........................................................................157 Podsumowanie ................................................................................................................160 Rozdział 3. Wczesne oraz późne wiązanie................................................................................................................161 Odwołania i wskaźniki do klas pochodnych ...................................................................161 Funkcje wirtualne w C++................................................................................................163 Wirtualne klasy bazowe ..................................................................................................167 Funkcje wirtualne w C++Builderze ................................................................................170 Klasy abstrakcyjne w stylu biblioteki VCL ....................................................................173 Specyfikator __closure....................................................................................................175 Obszary nazw ..................................................................................................................178 Operator __classid...........................................................................................................179 Funkcja Register() ...........................................................................................................179 Podsumowanie ................................................................................................................179 Rozdział 4. Tablice.............................................................................................................................................................181 Tablice dynamicznie alokowane w pamięci....................................................................181 Tablice dynamiczne.........................................................................................................184 Tablice otwarte................................................................................................................187 Tablice struktur ...............................................................................................................189 Tablice wskaźników do struktur ...............................................................................191 Odwołania do elementów tablicy wskaźników do struktur ......................................194 Podsumowanie ................................................................................................................197
  • 5. 6 C++Builder. Kompendium programisty Rozdział 5. Zaawansowane operatory rzutowania typów................................................................................199 Operator static_cast .........................................................................................................199 Operator dynamic_cast....................................................................................................200 Operator const_cast .........................................................................................................203 Operator reinterpret_cast.................................................................................................205 Podsumowanie ................................................................................................................207 Rozdział 6. Informacja czasu wykonania.................................................................................................................209 Klasa TObject..................................................................................................................210 Hierarchia własności komponentów VCL ......................................................................213 Czas ycia komponentów................................................................................................214 Moduł typeinfo.h.............................................................................................................215 Identyfikacja typów czasu wykonywania w oparciu o IDE............................................217 Tablica metod wirtualnych..............................................................................................218 Klasa TControl ................................................................................................................219 Modyfikator __rtti ...........................................................................................................221 Podsumowanie ................................................................................................................223 Rozdział 7. Obsługa wyjątków.................................................................................................................................... 225 Standardowa obsługa wyjątków......................................................................................225 Strukturalna obsługa wyjątków.......................................................................................228 Klasy wyjątków...............................................................................................................230 Zmienne globalne __throwExceptionName, __throwFileName i __throwLineNumber ...234 Zapisywanie nieobsłu onych wyjątków..........................................................................236 Transformowanie wyjątków Windows ...........................................................................238 Podsumowanie ................................................................................................................240 Rozdział 8. Obsługa plików .......................................................................................................................................... 241 Klasy TDirectoryListBox, TFileListBox i TDriveComboBox .......................................241 Klasy TActionList, TOpenDialog i TSaveDialog...........................................................243 Własność Options klas TOpenDialog i TSaveDialog .....................................................249 Klasy TOpenPictureDialog i TSavePictureDialog..........................................................250 Klasy TActionManager i TActionMainMenuBar ...........................................................253 Moduł sysutils .................................................................................................................257 Operacje na plikach...................................................................................................258 Atrybuty pliku...........................................................................................................268 Operacje na dyskach .................................................................................................272 Operacje na nazwach plików ....................................................................................273 Windows API ..................................................................................................................274 Klasa TMemoryStream ...................................................................................................280 Klasa TFileStream...........................................................................................................282 Przesyłanie plików przez sieć .........................................................................................285 Drukowanie .....................................................................................................................289 Podsumowanie ................................................................................................................291 Rozdział 9. Łańcuchy ANSI......................................................................................................................................... 293 Podsumowanie ................................................................................................................301 Rozdział 10. Zmienne o typie modyfikowalnym w czasie wykonywania programu .............................303 Struktura TVarData .........................................................................................................303 Klasa TCustomVariantType............................................................................................307 Moduł variants.................................................................................................................309
  • 6. Spis treści 7 Tablice wariantowe .........................................................................................................310 Wariantowe tablice otwarte.............................................................................................316 Klient OLE ......................................................................................................................318 Podsumowanie ................................................................................................................321 Rozdział 11. Funkcje FPU i systemowe..................................................................................................................... 323 Funkcje FPU....................................................................................................................323 Struktura SYSTEM_INFO..............................................................................................329 Klasa THeapStatus ..........................................................................................................332 Identyfikator GUID .........................................................................................................335 Podsumowanie ................................................................................................................337 Rozdział 12. Elementy wielowątkowości .................................................................................................................. 339 Wątki i procesy................................................................................................................339 Funkcja _beginthread() ...................................................................................................340 Funkcja _beginthreadNT() ..............................................................................................343 Funkcja _beginthreadex()................................................................................................348 Funkcja BeginThread() ...................................................................................................349 Zmienne lokalne wątku ...................................................................................................353 Klasa TThread .................................................................................................................355 Metody ......................................................................................................................355 Własności..................................................................................................................356 Zmienna IsMultiThread...................................................................................................361 Podsumowanie ................................................................................................................361 Rozdział 13. Liczby pseudolosowe................................................................................................................................ 363 Funkcje randomize() i random() .....................................................................................364 Losowanie z powtórzeniami............................................................................................368 Losowanie bez powtórzeń...............................................................................................371 Generatory częściowo uporządkowane...........................................................................377 Podsumowanie ................................................................................................................384 Rozdział 14. Konwersje wielkości liczbowych..........................................................................................................385 Własności ........................................................................................................................402 Metody ............................................................................................................................403 Podsumowanie ................................................................................................................409 Rozdział 15. Wprowadzenie do grafiki .......................................................................................................................411 Barwne modele................................................................................................................412 Płótno ..............................................................................................................................415 Mapy bitowe....................................................................................................................419 JPEG................................................................................................................................422 Obraz video .....................................................................................................................426 Drukowanie grafiki .........................................................................................................429 Podsumowanie ................................................................................................................430 Rozdział 16. Komponentowy model C++Buildera..................................................................................................431 Tworzymy nowy komponent ..........................................................................................431 Modyfikacja istniejącego komponentu z biblioteki VCL/CLX ......................................437 Komponenty graficzne ....................................................................................................443 Podsumowanie ................................................................................................................447
  • 7. 8 C++Builder. Kompendium programisty Rozdział 17. Biblioteki DLL ..........................................................................................................................................449 Budowanie DLL-i ...........................................................................................................449 Funkcja DllEntryPoint()..................................................................................................453 Bazowe adresy ładowania ...............................................................................................455 Pakiety.............................................................................................................................455 Określanie adresów funkcji.............................................................................................459 Podsumowanie ................................................................................................................461 Rozdział 18. Biblioteka CLX..........................................................................................................................................463 Zmiany w bibliotece uruchomieniowej...........................................................................463 Pliki i katalogi .................................................................................................................465 Znaki wielobajtowe .........................................................................................................465 Przykłady wykorzystania elementów biblioteki CLX ....................................................466 Komponenty klas TTimer i TLCDNumber ..............................................................467 Komponenty klas TActionList, TImageList, TMainMenu, TSaveDialog, TOpenDialog, TStatusBar i TToolBar...................................................................469 Podsumowanie ................................................................................................................470 Literatura...................................................................................................................................................... 471 Skorowidz ....................................................................................................................................................473
  • 8. Zaawansowane operatory rzutowania typów Oprócz tradycyjnych operatorów rzutowania typów zaczerpniętych z języka C, w C++ zdefi- niowano dodatkowo cztery operatory rzutowania typów o nazwach: UVCVKEAECUV, F[PCOKEA ECUV, EQPUVAECUV oraz TGKPVGTRTGVAECUV. Ogólne postaci omawianych operatorów wyglądają następująco: UVCVKEAECUV 6[R CTI F[PCOKEAECUV 6[R CTI EQPUVAECUV 6[R CTI TGKPVGTRTGVAECUV 6[R CTI Słowo 6[R oznacza docelowy typ rzutowania, zaś CTI (argument) — obiekt, któremu przypi- sujemy nowy typ danych. Operator static_cast Operator UVUVKEAECUV wykonuje tzw. rzutowanie niepolimorficzne, co między innymi oznacza mo liwość wykonania ka dej standardowej konwersji typów bez konieczności sprawdzania jej poprawności. Jako prosty przykład wykonania niepolimorficznego rzutowania typów rozpatrzymy prostą funkcję typu KPV z argumentem typu XQKF
  • 9. , której jedynym celem będzie zamiana małej litery na du ą. Poniewa dane typu XQKF
  • 10. nie mogą wskazywać na konkretne obiekty, nale y wyko- rzystać odpowiedni operator rzutowania typów, tak jak pokazano to na listingu 5.1, gdzie przed- stawiono kod głównego modułu projektu Projekt_R5_01.bpr.
  • 11. 200 C++Builder. Kompendium programisty W omawianym przykładzie dzięki operatorowi UVCVKEAECUV uzyskamy wskaźnik NGV do typu KPV w funkcji ECRKVCN ze wskaźnika NGVVGT do zupełnie innego typu bazowego będącego jej argumentem. Listing 5.1. Rzutowanie wskaźnika i jego dereferencja KPENWFG XENJ RTCIOC JFTUVQR KPENWFG 7PKVA4AJ RTCIOC RCEMCIG UOCTVAKPKV RTCIOC TGUQWTEG
  • 12. FHO 6(QTO
  • 13. (QTO KPV AAHCUVECNN ECRKVCN XQKF
  • 14. NGVVGT ] TWVQYCPKG YUMC PKMC PC RTCYKF QY[ V[R FCP[EJ KPV
  • 16. NGVVGT FGTGHGTGPELC YUMC PKMC TGVWTP VQWRRGT
  • 17. NGV _ AAHCUVECNN 6(QTO6(QTO 6%QORQPGPV
  • 18. 1YPGT 6(QTO 1YPGT ] _ XQKF AAHCUVECNN 6(QTO$WVVQP%NKEM 61DLGEV
  • 19. 5GPFGT ] %CPXCU (QPV %QNQT EN$NWG %CPXCU (QPV *GKIJV %CPXCU 6GZV1WV %NKGPV*GKIJV %NKGPV9KFVJ EJCT ECRKVCN C _ Powtórne wykorzystanie operatora dostępu pośredniego
  • 20. wraz z parametrem aktualnym funk- cji VQWRRGT oznacza w praktyce dereferencję wskaźnika NGV, gdy parametrami funkcji VQ WRRGT nie mogą być dane wskazujące. Operator dynamic_cast Operator F[PCOKEAECUV wykonuje rzutowanie czasu wykonywania, co oznacza, i poprawność tej operacji zawsze sprawdzania jest w trakcie działania programu. W przypadku, gdy operacja rzutowania typów nie jest mo liwa do zrealizowania, całość wyra enia, w którym występuje omawiany operator, przyjmuje wartość zerową. Poniewa operator F[PCOKEAECUV wykonuje rzutowanie czasu wykonywania, nale y go u ywać głównie do przekształcania typów polimorficznych. Oznacza to, i np. w przypadku, gdy pewna klasa polimorficzna 2QEJQFPC jest klasą potomną innej klasy polimorficznej $CQYC, to, posłu- gując się operatorem F[PCOKEAECUV, zawsze mo na przekształcić wskaźnik
  • 21. 2 do typu 2QEJQFPC na wskaźnik
  • 22. $ do typu $CQYC.
  • 23. Rozdział 5. G Zaawansowane operatory rzutowania typów 201 Jako przykład rozpatrzmy klasę abstrakcyjną 8GJKENG oraz dziedziczące po niej dwie klasy polimorficzne .QTT[ oraz 6KT. W klasie bazowej 8GJKENG zadeklarujemy czystą funkcją wirtu- alną UJQY , której kolejne implementacje zostaną umieszczone w polimorficznych klasach pochodnych, tak jak pokazano to na listingu 5.2. Listing 5.2. Kod modułu R5_02.h zawierającego definicje klas Vehicle, Lorry oraz Tir KHPFGH 4A* FGHKPG 4A* FGHKPG 07/A8'*+%.''5 ENCUU 8GJKENG ] RWDNKE AAHCUVECNN 8GJKENG ] (QTO /GOQ .KPGU #FF 6YQTGPKG GIGORNCTC MNCU[ 8GJKENG _ E[UVC HWPMELC YKTVWCNPC UJQY LGUV CFGMNCTQYCPC Y MNCUKG DCQYGL CNG PKG RQUKCFC Y PKGL UYQLGL KORNGOGPVCELK XKTVWCN XQKF AAHCUVECNN UJQY _ ENCUU .QTT[ RWDNKE 8GJKENG ] RWDNKE AAHCUVECNN .QTT[ ] (QTO /GOQ .KPGU #FF 6YQTGPKG GIGORNCTC MNCU[ .QTT[ _ XKTVWCN XQKF AAHCUVECNN UJQY ] (QTO /GOQ .KPGU #FF TWMQYCPKG FCP[EJ GIGORNCTC MNCU[ .QTT[ _ _ ENCUU 6KT RWDNKE 8GJKENG ] RWDNKE AAHCUVECNN 6KT ] (QTO /GOQ .KPGU #FF 6YQTGPKG GIGORNCTC MNCU[ 6KT _ XKTVWCN XQKF AAHCUVECNN UJQY ] (QTO /GOQ .KPGU #FF TWMQYCPKG FCP[EJ GIGORNCTC MNCU[ 6KT _ _ GPFKH
  • 24. 202 C++Builder. Kompendium programisty W funkcji obsługi zdarzenia $WVVQP%NKEM w głównym module Unit_R5_02.cpp projektu Projekt_R5_02.bpr zadeklarujemy dwa egzemplarze klasy .QTT[ oraz jeden klasy 6KT. Następ- nie zainicjujemy odpowiednimi wartościami tablicę wskaźników
  • 25. 8 do klasy 8GJKENG ogólnie reprezentującej pojazdy. Pojazdy zwane cię arówkami odszukamy, wykonując w pętli HQT operację polimorficznego rzutowania typu 8GJKENG reprezentowanego przez kolejne elementy tablicy wskaźników 8 na typ .QTT[, tak jak pokazano to na listingu 5.3. Listing 5.3. Kod źródłowy głównego modułu Unit_R5_02.cpp projektu Projekt_R5_02.bpr KPENWFG XENJ RTCIOC JFTUVQR KPENWFG 7PKVA4AJ KPENWFG 4AJ RTCIOC RCEMCIG UOCTVAKPKV RTCIOC TGUQWTEG
  • 26. FHO 6(QTO
  • 27. (QTO AAHCUVECNN 6(QTO6(QTO 6%QORQPGPV
  • 28. 1YPGT 6(QTO 1YPGT ] _ XQKF AAHCUVECNN 6(QTO$WVVQP%NKEM 61DLGEV
  • 29. 5GPFGT ] FGMNCTCELC GIGORNCT[ MNCU .QTT[ K 6KT .QTT[ . . 6KT 6 KPKELWLG VCDNKEú RQLCFÎY 8GJKENG
  • 30. 8=07/A8'*+%.''5? 8=? . 8=? 6 8=? . QFUWMWLG EKú CTÎYMK HQT KPV K K 07/A8'*+%.''5 K ] .QTT[
  • 32. 8=K? KH NN NWD KH NN (#.5' ] /GOQ .KPGU #FF %Kú CTÎYMK NN UJQY _ GNUG /GOQ .KPGU #FF +PPG RQLCF[ _ _ XQKF AAHCUVECNN 6(QTO(QTO%NQUG 61DLGEV
  • 33. 5GPFGT 6%NQUG#EVKQP #EVKQP ] #EVKQP EC(TGG _
  • 34. Rozdział 5. G Zaawansowane operatory rzutowania typów 203 Śledząc powy sze zapisy, musimy zauwa yć, i u ycie operatora F[PCOKEAECUV pozwoliło na od- szukanie wszystkich istniejących wskaźników do klasy reprezentującej cię arówki. W przypadku, gdy wartość wyra enia: .QTT[
  • 36. 8=K? będzie równa zeru (przyjmie wartość fałszywą), oznaczać to będzie, i operacja rzutowania nie jest mo liwa do przeprowadzenia. Fakt ten nie powinien nas zbytnio dziwić chocia by z tego względu, e pojazdy zwane cię arówkami nie zawsze są popularnymi „tirami”, zaś „tiry” z reguły bywają cię arówkami, co widoczne jest w działaniu naszej aplikacji pokazanej na rysunku 5.1 oraz co zostało wyraźnie określone w hierarchii klas przedstawionych w listingu 5.2. Rysunek 5.1. Rezultat wykonania aplikacji projektu Projekt_R5_02.bpr Operator const_cast Operator ten wykorzystywany jest głównie w celu przedefiniowywania danych ze specyfika- torami EQPUV oraz XQNCVKNG oraz w celu zmiany atrybutu EQPUV wybranej zmiennej. Stosując operator EQPUVAECUV, nale y pamiętać, i typ docelowy modyfikowanej zmiennej musi odpo- wiadać jej typowi bazowemu. Na listingu 5.4 zaprezentowano kod źródłowy głównego modułu projektu Projekt_R5_03.bpr, gdzie zdefiniowano klasę $CQYC z funkcją składową HWPE określoną za pomocą atrybutu EQPUV oraz przeładowaną względem HWPE funkcję HWPE . Listing 5.4. Przykład praktycznego wykorzystania operatora const_cast KPENWFG XENJ RTCIOC JFTUVQR KPENWFG 7PKVA4AJ RTCIOC RCEMCIG UOCTVAKPKV RTCIOC TGUQWTEG
  • 37. FHO 6(QTO
  • 38. (QTO ENCUU $CQYC ] RTKXCVG KPV PWODGT
  • 39. 204 C++Builder. Kompendium programisty RWDNKE AAHCUVECNN $CQYC KPV L ] PWODGT L _ KPV AAHCUVECNN HWPE KPV K EQPUV ] (QTO /GOQ .KPGU #FF (WPMELC PKG OQF[HKMWLG QDKGMVW Y[YQ WLæEGIQ TGVWTP K _ AAHCUVECNN HWPE KPV K ] (QTO /GOQ .KPGU #FF (WPMELC OQF[HKMWLG FCPG RT[YCVPG TGVWTP PWODGT K _ FQWDNG AAHCUVECNN HWPE FQWDNG K ] (QTO /GOQ .KPGU #FF (WPMELC Y[YQ CPC FNC K (QTO /GOQ .KPGU #FF K TGVWTP K _ _ AAHCUVECNN 6(QTO6(QTO 6%QORQPGPV
  • 40. 1YPGT 6(QTO 1YPGT ] _ XQKF AAHCUVECNN 6(QTO$WVVQP%NKEM 61DLGEV
  • 41. 5GPFGT ] $CQYC
  • 42. $ PGY $CQYC $CQYC
  • 43. $ PGY $CQYC URTCYFGPKG OQ NKYQ EK QFYQ CPKC UKú FQ RQUEGIÎNP[EJ HWPMELK UM CFQY[EJ QDKGMVÎY $ K $ MNCU[ $CQYC $ HWPE $ HWPE $ HWPE $ HWPE LCYPG RTGFGHKPKQYCPKG URGE[HKMCVQTC EQPUV KPV NN EQPUVAECUVKPV $ HWPE /GOQ .KPGU #FF NN NN EQPUVAECUVKPV $ HWPE /GOQ .KPGU #FF NN FGNGVG $ FGNGVG $ _ XQKF AAHCUVECNN 6(QTO(QTO%NQUG 61DLGEV
  • 44. 5GPFGT 6%NQUG#EVKQP #EVKQP ] #EVKQP EC(TGG _
  • 45. Rozdział 5. G Zaawansowane operatory rzutowania typów 205 Wynik działania programu bez przedefiniowania specyfikatora EQPUV operatorem EQPUVAECUV w trakcie wywołania funkcji HWPE oraz z przedefiniowaniem specyfikatora EQPUV w funkcji HWPE pokazany jest odpowiednio na rysunkach 5.2 i 5.3. Rysunek 5.2. Rezultat wykonania aplikacji projektu Projekt_R5_03.bpr bez przedefiniowania specyfikatora const w czasie wywołania funkcji func1() Rysunek 5.3. Rezultat wykonania aplikacji projektu Projekt_R5_03.bpr z jawnym przedefiniowaniem specyfikatora const podczas wywołania funkcji func1() Łatwo sprawdzić, i poprzez prosty zabieg polegający na przedefiniowaniu operatorem EQPUVA ECUV atrybutu EQPUV funkcji HWPE mo liwe stało się bezpośrednie uzyskanie wartości po- wrotnych tej funkcji ka dorazowo wywołanych w programie głównym z ró nymi parametrami aktualnymi. Operator reinterpret_cast Nazwa omawianego operatora rzutowania typów w dosłownym znaczeniu tego słowa odpowiada funkcji, jaką mo e on pełnić w programie. Operator TGKPVGTRTGVAECUV pozwala na przypisa- nie wybranej zmiennej zupełnie innego typu w porównaniu z jej typem aktualnym włącznie
  • 46. 206 C++Builder. Kompendium programisty z mo liwością rzutowania niezgodnych typów wskaźników. Na listingu 5.5 zamieszczono przykład wykorzystania operatora TGKPVGTRTGVAECUV w celu zamiany wskaźnika EJCT
  • 47. na typ zmiennej całkowitej KPV. Listing 5.5. Kod modułu Unit_R5_04.cpp projektu Projekt_R5_04.bpr jako przykład praktycznego wykorzystania operatora reinterpret_cast KPENWFG XENJ RTCIOC JFTUVQR KPENWFG 7PKVA4AJ RTCIOC RCEMCIG UOCTVAKPKV RTCIOC TGUQWTEG
  • 48. FHO 6(QTO
  • 49. (QTO AAHCUVECNN 6(QTO6(QTO 6%QORQPGPV
  • 50. 1YPGT 6(QTO 1YPGT ] _ XQKF AAHCUVECNN 6(QTO$WVVQP%NKEM 61DLGEV
  • 51. 5GPFGT ] KPV K RQFCLG F WIQ è CPCEQPGIQ VGMUVW Y MQORQPGPEKG 'FKV KPV 5KG 'FKV 5GN.GPIVJ FQFCLG PCM 07.. 5KG VYQT[ F[PCOKEP[ DWHQT FCP[EJ EJCT
  • 52. $WHHGT PGY EJCT=5KG? MQRKWLG CPCEQP[ VGMUV FQ DWHQTC FCP[EJ 'FKV )GV5GN6GZV$WH $WHHGT 5KG WOKGUEC YG Y CUPQ EK 6GZV CYCTVQ è DWHQTC FCP[EJ 'FKV 6GZV $WHHGT COKCPC TWVQYCPKG YUMC PKMC PC V[R EC MQYKV[ K TGKPVGTRTGVAECUVKPV $WHHGT /GOQ .KPGU #FF K WUWYC DWHQT FGNGVG $WHHGT _ XQKF AAHCUVECNN 6(QTO(QTO%NQUG 61DLGEV
  • 53. 5GPFGT 6%NQUG#EVKQP #EVKQP ] #EVKQP EC(TGG _
  • 54. Rozdział 5. G Zaawansowane operatory rzutowania typów 207 Łańcuch znaków, do którego chcemy uzyskać wskaźnik, wpisywany jest w komponencie edycyj- nym 'FKV. Rozmiar zaznaczonych w jego obszarze znaków ustalany jest za pomocą własności: AARTQRGTV[ KPV 5GN.GPIVJ ]TGCF)GV5GN.GPIVJ YTKVG5GV5GN.GPIVJ PQFGHCWNV_ Następnie, zaznaczony tekst kopiowany jest za pomocą funkcji: XKTVWCN KPV AAHCUVECNN )GV5GN6GZV$WH EJCT
  • 55. $WHHGT KPV $WH5KG do stworzonego uprzednio dynamicznego bufora danych $WHHGT, którego zawartość zostanie umieszczona we własności 6GZV komponentu 'FKV. W komponencie edycyjnym /GOQ zostanie wyświetlony efekt rzutowania na typ całkowity wskaźnika do łańcucha znaków umieszczonego w buforze. Podsumowanie Obecny rozdział poświecony był omówieniu czterech zdefiniowanych w C++ operatorów rzu- towania typów. U ywanie niektórych z nich w większości prostych aplikacji mo e wydawać się czynnością mało przydatną, jednak w programach bardziej zaawansowanych, w których nale y wykonywać specyficzne operacje rzutowania typów, umiejętność posługiwania się tymi ope- ratorami jest trudna do przecenienia. Kompletne kody źródłowe aplikacji będących ilustracją poruszanych w tym rozdziale zagadnień mo na znaleźć na dołączonej do ksią ki płycie CD w katalogu R05.