www.mamboteam.com
Project1.pl Advertisement
Start arrow Artykuły arrow Kurs Delphi arrow Rozdział III - Rzutowanie i konwersja typów
piątek, 10 wrzesień 2010
 
 
Menu główne
Start
Artykuły
FAQ
Download
Kontakt
Ciekawe linki
Mapa serwisu
Logowanie





Zapomniałeś hasła?
Nie masz konta? Załóż sobie
Rozdział III - Rzutowanie i konwersja typów Drukuj E-mail
Oceny: / 2
KiepskiBardzo dobry 
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.
Komentarze

Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie.
Tylko zarejestrowani użytkownicy mogą pisać komentarze.

 
wstecz   dalej »
LINKUJ PRO
Gościmy
Odwiedza nas 16 gości
Licznik odwiedzin
117623
 
Góra Góra