[ Pobierz całość w formacie PDF ]

o w × ow
Język programowania Delphi obsługuje także rekordy wariantowe, które umożliwiają
wzajemne nakładanie się różnych struktur danych w tej samej części pamięci wykorzy-
stywanej przez dany rekord. Rekordów tego typu nie należy mylić z wariantowym typem
danych ( )  rekordy wariantowe umożliwiają niezależny dostęp do wszystkich
nachodzących na siebie pól danych. Jeśli masz doświadczenie w programowaniu w języku C,
z pewnością dostrzegasz podobieństwo pomiędzy stosowanymi w Delphi rekordami
wariantowymi a uniami ( ) wewnątrz struktur ( ) definiowanych w języku C.
Przedstawiony poniżej fragment kodu pokazuje przykład takiego rekordu wariantowe-
go, w którym wszystkie użyte zmienne (typów , i ) są przechowy-
wane w tej samej przestrzeni pamięciowej:
Reguły języka programowania Delphi zakładają, że część wariantowa rekordu nie może
zawierać żadnych typów zarządzanych w czasie wykonywania aplikacji. Do zabronionych
typów należą klasy, interfejsy, warianty, tablice dynamiczne oraz łańcuchy.
110 Część ll Język programowania Delphi for .NET
Poniżej przedstawiono deklarację struktury w języku C, która jest równoważna powyż-
szej deklaracji rekordu wariantowego języka Delphi:
Ponieważ rekordy wariantowe zakładają jawny dostęp do rozplanowania pamięci, tego
rodzaju konstrukcje są także uważane za typy  niebezpieczne .
Rozkład pamięci wykorzystywanej przez rekord może być kontrolowany przez programistę
aplikacji .NET za pośrednictwem atrybutów i .
Klasa jest typem wartościowym, który może zawierać dane, właściwości, metody i ope-
ratory. Model obiektowy zastosowany w języku programowania Delphi omówimy
znacznie bardziej szczegółowo w dalszej części tego rozdziału, w podrozdziale  Stosowa-
nie obiektów Delphi  na tym etapie skupimy się jedynie na podstawowych regułach
składniowych dla deklaracji klas języka Delphi. Klasę definiuje się w następujący sposób:
Powyższa deklaracja jest równoważna następującej deklaracji stworzonej w języku pro-
gramowania C#:
Metody klas są definiowane w sposób niemal identyczny jak normalne procedury i funk-
cje (patrz podrozdział  Procedury i funkcje )  jedyną różnicą jest dodatkowo umiesz-
czana przed nazwÄ… procedury lub funkcji nazwa klasy wraz z oddzielajÄ…cÄ… kropkÄ…:
Rozdział 5. Język Delphi 111
Stosowany w języku Delphi symbol kropki ma podobne znaczenie jak wykorzystywany
w językach C# i Visual Basic .NET identyczny operator służący do odwoływania się do
składowych klas.
A
Język programowania Delphi daje możliwość tworzenia nowych nazw (tzw. aliasów)
dla wcześniej zdefiniowanych typów. Przykładowo, jeśli chcemy dla typu stwo-
rzyć nową nazwę, w tym przypadku , możemy użyć w naszym
kodzie następującej deklaracji:
Nowo zdefiniowany alias typu jest pod każdym względem zgodny z typem, który repre-
zentuje. Oznacza to, że w tym przypadku możemy używać typu
wszędzie tam, gdzie moglibyśmy użyć standardowego typu .
W języku Delphi istnieje jednak możliwość definiowania aliasów z mocniejszą kontrolą
typów, które z punktu widzenia kompilatora są zupełnie nowymi, unikalnymi typami.
Aby zdefiniować taki alias, użyj słowa zastrzeżonego w następujący sposób:
Dzięki zastosowaniu takiej składni, typ będzie w razie konieczności
konwertowany na typ Integer (np. w celu prawidłowego wykonania operacji przypisa-
nia), jednak typ ten nie będzie zgodny ze standardowym typem w roli parame-
trów i . Oznacza to, że poniższy fragment kodu jest syntaktycznie prawidłowy:
Z drugiej jednak strony skompilowanie poniższego fragmentu jest niemożliwe:
Poza wspomnianymi problemami z wymuszaną przez kompilator ścisłą zgodnością typów
okazuje się, że podczas kompilacji dla każdego aliasu z mocniejszą kontrolą typów au-
tomatycznie są generowane odpowiednie informacje czasu wykonywania. Dzięki temu
możliwe jest tworzenie dla poszczególnych typów unikalnych edytorów właściwości 
patrz rozdział 8.,  Mono. Wieloplatformowe środowisko. NET .
112 Część ll Język programowania Delphi for .NET
u n n
Rzutowanie typów jest techniką, dzięki której możesz wymusić na kompilatorze trakto-
wanie zmiennej pewnego typu jak zmiennej innego typu. Z uwagi na stosowaną w języku [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • razem.keep.pl