Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
Delphi. Leksykon
kieszonkowy
Autor: Waldemar Pokuta
ISBN: 83-7361-510-5
Format: B6, stron: 176
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
W dobie pracy pod presj czasu coraz popularniejsze staj si wizualne rodowiska
programistyczne, dziki ktrym autorzy aplikacji mog szybciej i efektywniej tworzy
nowe produkty. Wrd takich rodowisk zasuonym uznaniem cieszy si Delphi.
Oparte na Pascalu rodowisko umoliwia szybkie tworzenie rnego rodzaju aplikacji
dla systemu Windows. Zaimplementowana w Delphi wersja Pascala, noszca nazw
Object Pascal, zostaa znacznie rozbudowana w porwnaniu z oryginaem posiada
wiele moliwoci, ktrych nie znajdziemy w wersji standardowej. Z tego wanie
wzgldu krtka i zwiza ciga zawierajca opis tego jzyka moe okaza si
niezwykle przydatna programistom.
Ksika Delphi. Leksykon kieszonkowy jest tak wanie cigawk. Zawiera krtkie
omwienia wszystkich klas, funkcji i procedur oferowanych przez Object Pascala oraz
zwize wprowadzenie do rodowiska Delphi. Nie stanowi podrcznika programowania,
ale raczej pomoc dla tych programistw, ktrzy poznali ju podstawy Delphi i pogbiaj
swoj wiedz.
Struktury danych
Konwersja i formatowanie danych
Operacje na cigach tekstowych
Funkcje matematyczne
Sterowanie przebiegiem programu
Operacje wejcia-wyjcia
Elementy interfejsu uytkownika
Obsuga multimediw
Spis treci
Od Autora................................................................................ 7
Wstp........................................................................................ 7
Rozdzia 1. Jzyk Object Pascal ......................................... 8
Struktura programu..................................................................................8
Struktura moduu .....................................................................................9
Deklaracje.................................................................................................10
Wyraenia ................................................................................................13
Definicje procedur...................................................................................14
Definicje funkcji.......................................................................................15
Instrukcje proste......................................................................................16
Instrukcje zoone ...................................................................................18
Spis treci
Rozdzia 4. Napisy............................................................... 75
Podstawowe operacje .............................................................................75
Napisy koczone zerem.........................................................................79
Narzdzia MBCS.....................................................................................83
Dodatek................................................................................ 162
Skrty klawiaturowe ............................................................................162
Sowa kluczowe.....................................................................................164
Klasy wyjtkw.....................................................................................166
Tablica znakw ASCII..........................................................................167
Skorowidz............................................................................ 169
Spis treci
Rozdzia 3. Konwersja
i formatowanie
Przedstawione w rozdziale procedury i funkcje zawarte s
w moduach: db, dbcommon, sysutils, classes i math.
Rzutowanie typw
Czasami potrzebne jest traktowanie wyrae tak, jakby naleay
do innego typu. Mona otrzyma ten efekt przez rzutowanie
typw. Np. Integer('B') pozwala traktowa znak 'B' tak,
jakby by liczb cakowit. Skadnia rzutowania jest nastpujca:
identyfikatorTypu(wyrazenie)
Warto rzutowana
W rzutowaniu wartoci zarwno identyfikatorTypu jak
i wyrazenie musz nalee do typu porzdkowego, albo kade
z nich musi nalee do typu wskanikowego. Przykady rzutowania wartoci:
Integer('B')
Char(33)
Boolean(0)
TColor(2)
Longint(@Bufor)
Wynik rzutowania otrzymywany jest poprzez obcicie lub rozszerzenie wartoci wyraenia, przy czym zachowywany jest
znak wyraenia (+ lub ).
63
Instrukcja:
I := Integer('B');
Zmienna rzutowana
Mona rzutowa dowoln zmienn na dowolny typ pod warunkiem, e ich rozmiary (zmiennej i typu) s rwne i nie mieszamy typw cakowitych z rzeczywistymi (su do tego specjalne
funkcje omwione dalej). Przykady rzutowania zmiennej:
Char(I)
Boolean(Liczba)
TMojZdefiniowanyTyp(MojaZmienna)
64
F := Funkc(P);
//
//
Funkc(P) := F;
//
//
L := F(L);
//
//
L := Funkc(P)(L); //
//
Rzutowanie klas
Kontrolowanego rzutowania obiektw mona dokona operatorem as. Wyraenie:
obiekt as klasa
65
Aby przeksztaci format BCD (kada cyfra zapisana na czterech bitach) na Currency (walutowy) i z powrotem, wykorzystuje si funkcje:
function BCDToCurr(const BCD: TBcd; var Curr:
Currency): Boolean;
function CurrToBCD(Curr: Currency; var BCD: FMTBcd;
Precision: Integer=32; Decimals: Integer=4):
Boolean;
66
begin
bcd.Fraction[0] := 1*16+2;
bcd.Fraction[1] := 3*16+4;
bcd.Fraction[2] := 5*16+6;
bcd.Fraction[3] := 7*16+8;
BCDToCurr(bcd, c);
caption := FloatToStr(c);
end;
//
//
//
//
liczba
liczba
liczba
liczba
12
34
56
78
// wynik = -1234,5678
Wynik umieszczany jest w zmiennej DecVal i skada si z tablicy cyfr, znaku liczby i pozycji przecinka. ValueType okrela,
czy przeksztacamy typ Extended, czy Currency. Precision
i Decimals kontroluj zaokrglanie wyniku.
Typy zoone
Istnieje rwnie kilka funkcji konwertujcych proste typy na
zoone (np. rekordowe).
Rekord (w niektrych jzykach nazywany struktur) to zbir
elementw rnego typu. Kady element nazywany jest polem.
Typ TPoint definiuje pozycj na ekranie. Jest to rekord zawierajcy dwa pola wsprzdne X i Y.
Definicja tego typu wyglda nastpujco:
type TPoint = record
X: Longint;
Y: Longint;
end;
67
Funkcja ta suy do szybkiego wypeniania pl rekordu bez koniecznoci przypisywania wartoci kademu polu z osobna.
Mona rwnie dziki niej pomin deklaracj typu TPoint
przy wywoywaniu funkcji, ktre jako parametr przyjmuj
zmienne tego typu:
Canvas.Polygon([Point(20, 20), Point(40, 20),
Point(140, 40), Point(250, 130)]);
68
Formatowanie napisw
Liczby
Aby przeksztaci warto typu rzeczywistego na napis, moemy uy jednej z funkcji:
function FloatToStr(Value: Extended): string;
function CurrToStr(Value: Currency): string;
Jeeli chcemy mie wikszy wpyw na format utworzonego napisu, mona te wykorzysta:
function FloatToStrF(Value: Extended; Format:
TFloatFormat; Precision, Digits: Integer): string;
function CurrToStrF(Value: Currency; Format:
TFloatFormat; Digits: Integer): string;
function FormatFloat(const Format: string; Value:
Extended): string;
function FormatCurr(const Format: string; Value:
Currency): string;
Sformatowane napisy nie s koczone zerem. Funkcja jako wynik zwraca liczb znakw napisu.
Liczb cakowit moemy przeksztaci na napis reprezentujcy
liczb w systemie dziesitnym lub szesnastkowym:
function IntToStr(Value: Integer): string;
function IntToHex(Value: Integer; Digits: Integer):
string;
69
liczb
Str(Pi:5:6, napis);
Zoone formatowanie
Kilka poniszych funkcji uywa jako argumentu napisu z wzorcem formatowania. Wzorzec ten moe zawiera w sobie zwyky
tekst i specyfikatory formatowania. Maj one nastpujc form:
%[index:][-][width][.prec]type
70
71
72
Odczytywanie napisw
Konwertowanie napisw na liczb nie zawsze koczy si powodzeniem. W przypadku wystpienia bdu generowany jest
wyjtek.
Aby odczyta z napisu liczb cakowit (w postaci dziesitnej
lub szesnastkowej), mona posuy si funkcjami:
function StrToInt(const S: string): Integer;
function StrToInt64(const S: string): Int64;
Procedura:
procedure Val(S; var V; var Code: Integer);
moe odczytywa zarwno wartoci cakowite jak i zmiennoprzecinkowe. Jeeli Code przybierze warto rn od zera, to
nastpi bd na pozycji okrelonej przez Code.
Patrz take
Konwersje dotyczce daty i czasu znale mona w rozdziale 8. Obsuga systemu.
73
Standard Unicode
Typ WideString reprezentuje napisy w formacie Unicode
(kady znak zapisany na 16 bitach). Odwoujc si do funkcji
COM API, czsto jestemy zmuszeni zmieni typ z AnsiString (String) na WideString:
function StringToWideChar(const Source: string;
Dest: PWideChar; DestSize: Integer): PWideChar;
74