| Rozdział III - Rzutowanie i konwersja typów |
|
|
| Napisał: Berl | ||
| czwartek, 02 marzec 2006 | ||
|
Rzutowanie typów to nic innego, jak oszukanie kompilatora, że zmienna jest zmienną innego typu, niż jest w rzeczywistości. Kompilator Delphi jest bardzo rygorystyczny, jeśli chodzi o zgodności typów. Wywołanie jakiejś funkcji z parametrem innego typu, niż jest to przewidziane, spowoduje na pewno błąd kompilacji. Dzięki rzutowaniu i konwersji typów jest to możliwe. Przyjrzyjmy się prostej operacji przypisania : var a : byte; b : char; begin a := 35; b := a; end;Kompilator oczywiście wskaże błąd przy operacji przypisania, ponieważ zmienne a i b są zmiennymi różnych typów. Z punktu widzenia programisty taka operacja mogłaby być dozwolona, gdyż zmienna typu byte i char są przechowywane w pamięci tak samo, a chodzi tylko o różne potraktowanie tego samego obszaru pamięci. Można wskazać kompilatorowi, aby tak czynił, rzutując zmienną a na typ char : var a : byte; b : char; begin a := 35; b := char(a); end;Rzutowanie typów jest bardzo przydatnym narzędziem, jednak jest ono niebezpieczne w rękach niedoświadczonego programisty. Należy zaznaczyć fakt, że rzutowanie nie jest tożsame z konwersją zmiennej na inny typ. Rzutowanie zmiennej jednego typu na inny typ, który jest w pamięci przechowywany zupełnie inaczej, w najlepszym razie prowadzi do otrzymania bezsensownych i błędnych wyników obliczeń, a w najgorszym do zawieszenia się aplikacji. Do zamiany zmiennej na inny typ służy konwersja typów. Konwersja typów może przebiegać na dwa sposoby : sposób jawny i sposób ukryty. Konwersja przebiega w sposób jawny, jeżeli jest do niej używana jedna z funkcji konwertujących. Przykłady konwersji jawnych : var a : real; b : integer; c : string; begin a := 12.7; b := trunc(a); c := FloatToStr(a); end;Natomiast konwersja ukryta zachodzi wtedy, gdy kompilator sam konwertuje zmienne na inny typ. Przykład : var a : real; b : integer; begin b := 19; a := b; end;Oczywiście konwersja zmiennej a na typ zmiennej b w sposób niejawny nie jest możliwa. Do najwazniejszych funkcji konwertujących zaliczamy : 1. Ord - konwertuje znak na liczbę całkowitą; 2. Chr - konwertuje liczbę całkowitą na znak; 3. Round - konwertuje liczbę ułamkową na całkowitą, zaokrąglając ją do najbliższej całkowitej; 4. Trunc - konwertuje liczbę ułamkową na całkowitą, obcinając część ułamkową; 5. IntToStr - konwertuje liczbę całkowitą na łańcuch znaków; 10. FloatToStr - konwertuje liczbę ułamkową na łańcuch znaków; 11. StrToFloat - konwertuje łańcuch znaków na liczbę ułamkową; 12. StrToInt - konwertuje łańcuch znaków na liczbę całkowitą; Konwertowanie typów jest bezpieczniejsze niż ich rzutowanie, lecz mniej wydajne.
Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie. |
||
| wstecz | dalej » |
|---|




