PODSTAWY PROGRAMOWANIA Andrzej Marciniak Prezentacja multimedialna przygotowana za pomocą systemu Corel Presentations X3 Copyright 2003-2017 by Andrzej Marciniak PP-11(1 z 95)
Na poprzednim wykładzie... P pakiety wykorzystanie pakietu w projekcie tworzenie pakietów P operacje wejścia-wyjścia standardowe wejście-wyjście w programach tekstowych przetwarzanie plików PP-11(2 z 95)
Na tym wykładzie... P typy sparametryzowane definiowanie typów sparametryzowanych sparametryzowane typy proceduralne i metody P podstawowe moduły biblioteki RTL moduł System moduł System.Variants moduł System.SysUtils moduł System.Math wywołanie innego programu z programu paskalowego P informacje o bibliotece VCL okienka z komunikatami PP-11(3 z 95)
Typy sparametryzowane Typy rekordowe, klasowe i łącz programowych mogą być sparametryzowane. Parametryzacja dotyczy w tym przypadku typów danych występujących w tych strukturach (pól, wartości metod typu funkcji i parametrów metod). Sparametryzować można też ogólne i obiektowe typy proceduralne oraz metody. W języku angielskim wymienione sparametryzowane struktury nazywa się generics (ogólniki?) lub generic types (typy ogólnikowe?). PP-11(4 z 95)
Typy sparametryzowane Przykład type TSIPair = class private FKey : string; FValue : Integer; public function GetKey : string; procedure SetKey (Key : string); function GetValue : Integer; procedure SetValue (Value : Integer); property Key : TKey read GetKey write SetKey; property Value : TValue read GetValue write SetValue; end; W powyższej definicji występują typy TKey i TValue, które powinny być zdefiniowane wcześniej i zgodne z typami odpowiednio string i Integer. Klasę TSIPair można uniezależnić od typów pól wprowadzając ich parametryzację. PP-11(5 z 95)
Typy sparametryzowane Przykład type TPair<TKey, TValue> = class private FKey : TKey; FValue : TValue; public function GetKey : TKey; procedure SetKey (Key : TKey); function GetValue : TValue; procedure SetValue (Value : TValue); property Key : TKey read GetKey write SetKey; property Value : TValue read GetValue write SetValue; end; Definicja ta określa typ klasowy z dwoma parametrami określającymi typy pól. Definicje metod tej klasy powinny uwzględniać tę parametryzację w nagłówkach, np. function TPair<TKey, TValue>.GetKey : TKey; PP-11(6 z 95)
Typy sparametryzowane Przykład type TPair<TKey, TValue> = class private FKey : TKey; FValue : TValue; public function GetKey : TKey; procedure SetKey (Key : TKey); function GetValue : TValue; procedure SetValue (Value : TValue); property Key : TKey read GetKey write SetKey; property Value : TValue read GetValue write SetValue; end; Klasa ta umożliwia późniejsze wystąpienie definicji innych klas, w których w miejscu parametrów będą podawane nazwy odpowiednich typów, np. type TSIPairBis = TPair<string, Integer>; PP-11(7 z 95)
Typy sparametryzowane Definiowanie typów sparametryzowanych Definicja sparametryzowanego typu rekordowego: type identyfikator-typu <lista-parametrów> = record lista-elementów-rekordu end; gdzie lista elementów rekordu może zawierać deklaracje takich samych elementów, jak w klasopodobnym typie rekordowym. PP-11(8 z 95)
Typy sparametryzowane Definiowanie typów sparametryzowanych Definicja sparametryzowanego typu klasowego: type identyfikator-typu <lista-parametrów> = class [(przodek[<lista-parametrów>])] lista-elementów-klasy end; gdzie lista elementów klasy składa się z deklaracji pól, metod i własności (podobnie jak w definicji zwykłej klasy). Zauważmy, że przodek może też być typem sparametryzowanym. PP-11(9 z 95)
Typy sparametryzowane Sparametryzowane typy proceduralne i metody Definicje sparametryzowanych typów proceduralnych: type identyfikator-typu <lista-parametrów> = procedure [(lista- parametrów)] [of object]; type identyfikator-typu <lista-parametrów> = function [(lista- parametrów)] : typ-wartości-funkcji [of object]; gdzie opcjonalne słowa of object dotyczą sparametryzowanych obiektowych typów proceduralnych. Opcjonalna lista parametrów po słowach procedure i function może zawierać deklaracje parametrów, w których typy będą parametrami. To samo dotyczy typu wartości funkcji. PP-11(10 z 95)
Typy sparametryzowane Sparametryzowane typy proceduralne i metody Przykład W definicji sparametryzowanego typu proceduralnego postaci type FunkcjaParam<PewienTyp> = function (const łańcuch : string; const wartość : PewienTyp) : PewienTyp; typ PewienTyp występuje jako parametr nie tylko w nazwie typu, ale także jako określenie typu parametru wartość i typu wartości funkcji. Jeśli zadeklarujemy zmienną proceduralną var ZmiennaF : FunkcjaParam<Integer>; to będzie można jej przypisać na przykład następującą funkcję: function MojaFunkcja (const a : string; const b : Integer) : Integer; begin Writeln (a,, b); Result:=b end; PP-11(11 z 95)
Typy sparametryzowane Sparametryzowane typy proceduralne i metody Deklaracje metod mogą też być sparametryzowane, a typy parametryczne mogą być użyte przy określaniu typów parametrów tych metod i typów wartości metod-funkcji. Deklaracja sparametryzowanej metody-procedury ma postać procedure nazwa-metody <lista-parametrów> [(lista- parametrów)]; a metody-funkcji S function nazwa-metody <lista-parametrów> [(lista- parametrów)] : typ- wartości-funkcji; Uwaga: Występują pewne ograniczenia dotyczące metod i typów sparametryzowanych (szczegóły zob. w podręczniku). PP-11(12 z 95)
Tradycyjny podział modułów standardowych dostarczanych w pakiecie Delphi (od wersji 1.0) na dwie biblioteki (nie mylić z bibliotekami łączonymi dynamicznie): Pwykonawczą, nazywaną biblioteką RTL (skr. od ang. Run-Time Library), P komponentów wizualnych, zwaną biblioteką VCL (skr. od ang. Visual Component Library), uległ od wersji 4 pakietu zmianie. Spowodowane to zostało przede wszystkim faktem dostarczania tych modułów w postaci pakietów. Biorąc jednak pod uwagę domyślne katalogi zapisu wersji źródłowych modułów standardowych, pozostaniemy przy tradycyjnym podziale tych modułów na bibliotekę RTL i bibliotekę VCL. PP-11(13 z 95)
Czterema najważniejszymi modułami biblioteki RTL są: System, System.SysUtils, System.Math oraz System.Variants. W modułach tych znajdują się definicje funkcji i procedur standardowych, deklaracje zmiennych, definicje stałych, literałów zmiennych i typów danych wykorzystywanych w tych funkcjach i procedurach oraz definicje typów reprezentujących warunki błędów i stany wyjątkowe. Za pomocą funkcji i procedur standardowych wykonuje się operacje wejścia-wyjścia, dokonuje się konwersji danych, dynamicznie zarządza się pamięcią operacyjną, wykonuje się operacje porządkowe, operacje na różnych typach danych itp. Standardowe funkcje arytmetyczne pozwalają obliczać m. in. wartości funkcji trygonometrycznych, wykładniczych i logarytmów. PP-11(14 z 95)
Moduł System Moduł standardowy System jest dostępny automatycznie przez każdy program, bibliotekę DLL i dowolny inny moduł. Stąd też jego deklaracja za pomocą konstrukcji uses jest zbędna. Definicje pewnych literałów, typów, funkcji i procedur (takich jak: False, Real, Readln) nie znajdują się bezpośrednio w module System (zob. tekst źródłowy modułu), lecz są wbudowane w kompilator języka Delphi. Elementy te są jednak traktowane tak samo, jak gdyby były zdefiniowane w module System. PP-11(15 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Procedury przerywające wykonywanie instrukcji iteracyjnych i programu Break natychmiastowe wyjście z instrukcji iteracyjnej ją obejmującej Continue natychmiastowe rozpoczęcie następnej iteracji danej pętli PP-11(16 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Procedury przerywające wykonywanie instrukcji iteracyjnych i programu Exit natychmiastowe wyjście z bieżącego bloku (jeśli procedura jest wywołana w procedurze lub funkcji, powoduje to zakończenie wykonywania danej procedury lub funkcji i powrót do miejsca wywołania, a gdy wywołanie procedury zachodzi w części wykonawczej programu, to nastąpi przerwanie jego wykonywania) RunError (kod-błędu) lub RunError przerwanie wykonywania programu i wygenerowanie błędu jego wykonania o wyspecyfikowanym kodzie (jeśli kod błędu nie jest podany, przyjmuje się, że jest to 0). PP-11(17 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Procedury przerywające wykonywanie instrukcji iteracyjnych i programu Halt lub Halt (kod-wyjścia) natychmiastowe przerwanie programu i powrót do systemu bez względu na miejsce wywołania; w przypadku wyspecyfikowania kodu wyjścia przerwanie wykonywania programu następuje z podanym kodem zakończenia (wywołanie procedury bez argumentu jest równoważne wy-wołaniu Halt (0)) W przypadku programów okienkowych, zamiast procedury Halt należy stosować wywołanie Application.Terminate Metoda Terminate jest metodą typu klasowego TApplication, a Application predefiniowanym obiektem tego typu. PP-11(18 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Procedury dynamicznego przydziału pamięci i zarządzania pamięcią New (zmienna-wskaźnikowa) utworzenie zmiennej dynamicznej i ustalenie zmiennej wskaźnikowej wskazującej na nią; do utworzonej zmiennej dynamicznej można odwołać się za pomocą zmiennej wskazywanej postaci zmienna-wskaźnikowa^; przydzielony zmiennej dynamicznej blok pamięci jest równy rozmiarowi typu, z którym związana jest podana zmienna wskaźnikowa GetMem (zmienna-wskaźnikowa, rozmiar) utworzenie zmiennej dynamicznej o podanym (w bajtach) rozmiarze PP-11(19 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Procedury dynamicznego przydziału pamięci i zarządzania pamięcią Przykłady 1)Załóżmy następujące definicje: type tablica = array [1..100] of Real48; var wskaznik : ^tablica; Wywołanie New (wskaznik); spowoduje utworzenie zmiennej dynamicznej typu tablica, która zajmie 600 bajtów pamięci. Przykład odwołania: wskaznik^[50]:=12.34; 2)Wywołanie GetMem (wskaznik, 400); spowoduje również utworzenie zmiennej dynamicznej typu tablica, ale przydzieli się jej tylko 400 bajtów pamięci. Odwołanie, np. wskaznik^[90] przekroczy ten rozmiar i błąd nie będzie sygnalizowany (może to doprowadzić do nieprzewidzianych PP-11(20 z 95) konsekwencji).
Moduł System przegląd ważniejszych funkcji i procedur Procedury dynamicznego przydziału pamięci i zarządzania pamięcią Dispose (zmienna-wskaźnikowa) zwalnienie obszaru pamięci dynamicznej zajmowanego przez zmienną wskazywaną zmienna-wskaźnikowa^ (zmienna dynamiczna musi być uprzednio utworzona za pomocą New) FreeMem (zmienna-wskaźnikowa) lub FreeMem (zmienna-wskaźnikowa, rozmiar) zwrócenie do stosu obszaru pamięci wskazywanego wyspecyfikowaną zmienną wskaźnikową, który został uprzednio przydzielony za pomocą procedury GetMem (jeśli podano rozmiar, to jego wartość musi być taka sama, jak w wywołaniu procedury GetMem tworzącej daną zmienną dynamiczną) PP-11(21 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Procedury dynamicznego przydziału pamięci i zarządzania pamięcią Przykład W celu zwolnienia pamięci przydzielonej zmiennej dynamicznej wskaznik^ w pierwszym z poprzednich przykładów należy zastosować instrukcję Dispose (wskaznik); a w celu zwolnienia pamięci przydzielonej tej zmiennej za pomocą procedury GetMem, należy zastosować wywołanie FreeMem (wskaznik, 600); PP-11(22 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Procedury dynamicznego przydziału pamięci i zarządzania pamięcią Procedury służące do dynamicznego przydzielania i zwalniania pamięci, zmienne typów wskaźnikowych oraz zmienne wskazywane są wykorzystywane przede wszystkim do programowania dynamicznych struktur danych, tj. prostych i złożonych struktur danych, którym pamięć jest przydzielana i zwalniana w trakcie wykonywania programu. Takie złożone struktury danych, zwane też strukturami listowymi, są uporządkowanymi zbiorami składników, niekoniecznie o jednakowych typach. Poszczególne składniki mogą być elementami prostymi (np. liczbami i pojedynczymi znakami) lub złożonymi (np. tablicami, rekordami, a nawet listami). PP-11(23 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Procedury dynamicznego przydziału pamięci i zarządzania pamięcią Ze względu na organizację oraz sposoby dołączania, wstawiania i usuwania składników, wśród struktur listowych można wyróżnić m. in.: P stosy, w których wstawianie, usuwanie i dostęp są możliwe tylko w jednym końcu zwanym wierzchołkiem stosu, P kolejki, w których można dołączyć składniki tylko w jednym końcu, a usunąć tylko w drugim końcu, PP-11(24 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Procedury dynamicznego przydziału pamięci i zarządzania pamięcią Ze względu na organizację oraz sposoby dołączania, wstawiania i usuwania składników, wśród struktur listowych można wyróżnić m. in.: P listy (liniowe), które charakteryzują się tym, że dla każdego składnika (poza pierwszym i ostatnim) jest określony jeden składnik poprzedni i jeden składnik następny lub tylko składnik poprzedni lub następny, przy czym w dowolnym miejscu takiej struktury można dołączyć nowy składnik lub usunąć składnik istniejący, PP-11(25 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Procedury dynamicznego przydziału pamięci i zarządzania pamięcią Ze względu na organizację oraz sposoby dołączania, wstawiania i usuwania składników, wśród struktur listowych można wyróżnić m. in.: P drzewa, w których dla każdego składnika (poza pierwszym) jest określony jeden składnik poprzedni i dla każdego składnika (poza ostatnimi w strukturze) jest określonych n (n 2) składników następnych (poza ostatnimi), P grafy, które definiowane są przez dwa zbiory: zbiór wierzchołków i zbiór krawędzi, określający powiązania pomiędzy poszczególnymi wierzchołkami. PP-11(26 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Przetwarzanie tablic dynamicznych SetLength (zmienna, liczba-1, liczba-2,..., liczba-m) przydzielenie pamięci elementom tablicy dynamicznej (zmienna oznacza tu zmienną typu n-wymiarowej tablicy dynamicznej) Pierwsze wywołanie procedury SetLength dla wielowymiarowej tablicy dynamicznej nie musi określać od razu liczby elementów (zakresu indeksów) w każdym wymiarze. Dla tablicy trójwymiarowej można na przykład najpierw określić zakres indeksów pierwszego wymiaru (i tym samym przydzielić mu pamięć), a następnie albo za pomocą jednego wywołania określić zakresy indeksów pozostałych dwu wymiarów, albo poprzez dwukrotne wywołanie określić kolejno zakres indeksów drugiego i trzeciego wymiaru. Oczywiście w obu przypadkach zmienną występującą w wywołaniu procedury SetLength należy odpowiednio indeksować. PP-11(27 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Przetwarzanie tablic dynamicznych Initialize (zmienna) wyzerowanie pamięci przydzielonej tablicy dynamicznej za pomocą procedury SetLength Finalize (zmienna) zwolnienie pamięci przydzielonej tablicy dynamicznej za pomocą procedury SetLength Pamięć przydzieloną tablicy dynamicznej można też zwolnić za pomocą instrukcji przypisania zmienna:=nil PP-11(28 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Przetwarzanie tablic dynamicznych funkcja Low (zmienna) określenie najmniejszego indeksu tablicy dynamicznej (wartością funkcji jest zawsze 0) funkcja High (zmienna) określenie największego indeksu tablicy dynamicznej funkcja Length (zmienna) określenie liczby elementów tablicy dynamicznej funkcja Copy (zmienna, indeks, licznik) wartością funkcji jest tablica (dynamiczna), która zawiera licznik elementów począwszy od elementu zmienna[indeks]. PP-11(29 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Przetwarzanie tablic dynamicznych Przykład Załóżmy, że za pomocą instrukcji SetLength (tablica, 40) przydzieliliśmy pamięć tablicy dynamicznej tablica, która będzie składać się z 40 elementów (o indeksach od 0 do 39). W celu obcięcia tej tablicy do 20 pierwszych elementów można zastosować instrukcję tablica:=copy(tablica, 0, 20) PP-11(30 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Funkcje do wykonywania konwersji Chr (kod-znaku) otrzymanie znaku (dwubajtowego) o podanym kodzie dziesiętnym Ord (x) określenie numeru porządkowego podanego argumentu typu porządkowego (wyliczeniowego, całkowitego, logicznego, znakowego lub okrojonego); typem wyrażenia x nie może być typ całkowity Int64 PP-11(31 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Funkcje do wykonywania konwersji Round (x) zaokrąglenie wartości x dowolnego typu rzeczywistego do najbliższej liczby całkowitej (typu Int64) Jeśli wartość wyrażenia x znajduje się pośrodku dwóch liczb całkowitych, to wynikiem będzie liczba parzysta! Trunc (x) obcięcie części ułamkowej argumentu x (zaokrąglenie w kierunku zera); wartość funkcji jest typu Int64 PP-11(32 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Funkcje do wykonywania konwersji High (x) określanie największej wartości w zakresie określonym podanym argumentem (argument x oznacza zmienną lub identyfikator typu porządkowego, łańcuchowego lub typu tablicy statycznej) Low (x) określanie największej wartości w zakresie określonym podanym argumentem (argument x jw.) Dla typu tablicy statycznej funkcja High (Low) daje największą (najmniejszą) wartość w typie indeksów tablicy, przy czym jeśli tablica jest wielowymiarowa, to odpowiednia wartość dotyczy pierwszego wymiaru. W przypadku typu łańcuchowego wartością funkcji High jest zadeklarowany lub domyślny rozmiar PP-11(33 z 95) łańcucha, a funkcji Low 0 (zero).
Moduł System przegląd ważniejszych funkcji i procedur Funkcje arytmetyczne Bardzo ważna uwaga: Błędy arytmetyki zmiennopozycyjnej powodują, że funkcje arytmetyczne języka Delphi obliczają tylko przybliżone wartości odpowiadających im funkcji w sensie matematycznym. Abs(x) wartość bezwzględna x ArcTan(x) arcus tangens x Cos(x) cosinus x PP-11(34 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Funkcje arytmetyczne Exp(x) liczba e do potęgi danej przez argument x Frac(x) część ułamkowa argumentu x Int(x) część całkowita argumentu x Ln(x) logarytm naturalny z argumentu x Pi 3.1415926535897932385 PP-11(35 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Funkcje arytmetyczne Sin(x) sinus x Sqr(x) kwadrat argumentu x Sqrt(x) pierwiastek kwadratowy z argumentu x W języku Delphi nie ma operatora potęgowania. Podniesienie liczby x do potęgi niecałkowitej wymaga na ogół zastosowania funkcji standardowych Exp i Ln zgodnie z zależnością x y exp(y ln x) lub skorzystania z funkcji standardowej Power zdefiniowanej w module Math. PP-11(36 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Generowanie liczb losowych Randomize zainicjowanie wbudowanego generatora liczb losowych, którego zarodek jest przechowywany pod predefiniowaną zmienną RandSeed (generator liczb losowych może też być zainicjowany przez bezpośrednie przypisanie tej zmiennej wartości różnej od 0) funkcja Random lub Random (zakres) otrzymanie liczby losowej; jeśli nie podano argumentu, to wartością funkcji jest liczba losowa typu rzeczywistego należąca do przedziału [0,1), a gdy podano zakres, to wartością funkcji jest liczba losowa całkowita z przedziału [0, zakres), przy czym dla wartości zakres=0 wartością funkcji jest 0 PP-11(37 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Generowanie liczb losowych Przykład Poniższy program wypisuje na ekranie monitora 100 całkowitych liczb losowych z przedziału [0, 100). program programam66; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; var i : ShortInt; begin Randomize; for i:=1 to 100 do Write (Random(100):5); Readln end. Każde wykonanie tego programu spowoduje pojawienie się na ekranie innego ciągu liczb losowych. Aby każde wykonanie dawało ten sam ciąg, należy w programie przypisać pewną wartość literałowi zmiennemu RandSeed i nie inicjować generatora liczb losowych za pomocą procedury Randomize. PP-11(38 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Funkcje i procedury porządkowe Dec (x) lub Dec (x, n) dla zmiennej x typu porządkowego i wartości n typu całkowitego podstawienie pod zmienną x wartości bezpośrednio poprzedzającej aktualną wartość tej zmiennej w danym typie porządkowym (gdy drugi argument nie jest wyspecyfikowany) lub wartości poprzedzającej ją o n Inc (x) lub Inc (x, n) podstawienie pod zmienną x wartości następnej lub wartości następującej o n dalej (w sensie uporządkowania) po aktualnej wartości tej zmiennej PP-11(39 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Funkcje i procedury porządkowe funkcja Odd (x) testowanie nieparzystości argumentu (wartością funkcji jest wartość liogiczna True, gdy x jest liczbą nieparzystą, lub wartość False, gdy x jest liczbą parzystą) funkcja Pred (x) wartość poprzedzająca x w danym typie porządkowym funkcja Succ (x) wartość następująca po x w tym samym typie porządkowym PP-11(40 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Funkcje i procedury przetwarzające łańcuchy funkcja Concat (lista-łańcuchów) połączenie kilku łańcuchów w jeden łańcuch funkcja Copy (łańcuch, indeks, licznik) wycięcie części łańcucha (wartością funkcji jest łańcuch o długości określonej przez licznik, wycięty z wyspecyfikowanego łańcucha, począwszy od znaku o pozycji określonej przez indeks) funkcja Length (łańcuch) określenie długości łańcucha SetLength (zmienna-łańcuchowa, długość) zmiana długości zmiennej łańcuchowej PP-11(41 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Funkcje i procedury przetwarzające łańcuchy funkcja Pos (podłańcuch, łańcuch) określenie pozycji, od której w łańcuchu zaczyna się podłańcuch Delete (zmienna-łańcuchowa, indeks, licznik) usunięcie w łańcuchu (przypisanym wyspecyfikowanej zmiennej łańcuchowej) liczby znaków określonej przez licznik, począwszy od pozycji podanej argumentem indeks Insert (podłańcuch, zmienna-łańcuchowa, indeks) wstawienie do łańcucha (przypisanego wyspecyfikowanej zmiennej łańcuchowej), począwszy od pozycji określonej przez indeks, podanego podłańcucha. PP-11(42 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Funkcje i procedury przetwarzające łańcuchy Str (argument-numeryczny, zmienna-łańcuchowa) dla argumentu numerycznego o jednej z trzech postaci: wyrażenie wyrażenie:długość wyrażenie:długość:miejsca-dziesiętne zamiana wartości wyrażenia na jego reprezentację łańcuchową, zgodnie z formatującymi argumentami długość i miejsca dziesiętne, oraz podstawienie wyniku pod wyspecyfikowaną zmienną łańcuchową PP-11(43 z 95)
Moduł System przegląd ważniejszych funkcji i procedur Funkcje i procedury przetwarzające łańcuchy Val (łańcuch, zmienna-numeryczna, kod) przekształcenie wartości łańcuchowej podanej pierwszym argumentem na jego reprezentację numeryczną i zapamiętanie wyniku pod podaną zmienną numeryczną (wyspecyfikowany łańcuch musi być przy tym ciągiem znaków, który tworzy poprawną liczbę całkowitą lub rzeczywistą) Jeśli łańcuch nie przedstawia poprawnej liczby, to pozycja pierwszego błędnego znaku jest podstawiana pod zmienną kod. W przeciwnym przypadku zmiennej tej jest przypisywana wartość 0). PP-11(44 z 95)
Moduł System.Variants przegląd ważniejszych funkcji i procedur funkcja VarType (wariant) określenie aktualnego typu wariantu Wartość funkcji (typu Integer) określa kod typu wariantu, który jest złożony ze stałych o przedrostku var. W celu sprawdzenia, czy odpowiedni bit tego kodu jest włączony, zaleca się zastosowanie konstrukcji if VarType(wariant) and stała = stała then... PP-11(45 z 95)
Moduł System.Variants przegląd ważniejszych funkcji i procedur funkcja VarAsType (wariant, typ-wariantowy) VarCast (zmienna-wariantowa, wariant, typ-wariantowy) zmiana aktualnego typu wartości wariantu (typ wariantowy oznacza jedną ze stałych o przedrostku var) funkcja VarIsEmpty (wariant) sprawdzenie, czy wariantowi przypisano już jakąś wartość (jeśli wartość wyspecyfikowanego wariantu jest równa predefiniowanej zmiennej Unassigned, to wartością funkcji jest wartość logiczna True, a w przypadku przeciwnym False) VarClear (zmienna-wariantowa) przypisanie wariantowi wartości Unassigned PP-11(46 z 95)
Moduł System.Variants przegląd ważniejszych funkcji i procedur funkcja VarArrayCreate (granice, typ-wariantowy) utworzenie tablicy wariantowej (parametr granice musi zawierać parzystą liczbę wartości każda para wartości określa dolną i górną granicę indeksów jednego wymiaru tablicy) Przykład Dla zmiennej x typu Variant instrukcja x:=vararraycreate([0, 2, 1, 5, 1, 1], varbyte); utworzy trójwymiarową tablicę wariantową o typach elementów określonych stałą varbyte. Indeksy pierwszego wymiaru będą mogły zmieniać się od 0 do 2, drugiego od 1 do 5, a trzeciego wymiaru od 1 do 1. PP-11(47 z 95)
Moduł System.Variants przegląd ważniejszych funkcji i procedur funkcja VarArrayOf (wartości) utworzenie jednowymiarowej tablicy wariantowej o podanych wartościach Przykłady 1) w:=vararrayof([0, 1, 2, 3, 4, 5]); 2) Po wykonaniu instrukcji w:=vararraycreate([1, 4], varvariant); utworzenie tablicy wariantowej dla elementu w[4] można osiągnąć za pomocą instrukcji w[4]:=vararrayof([ Object, False, 1.2, 2]); PP-11(48 z 95)
Moduł System.Variants przegląd ważniejszych funkcji i procedur funkcja VarIsArray (wariant) sprawdzenie, czy wariant jest tablicą wariantową funkcja VarArrayDimCount (wariant) określenie liczby wymiarów tablicy wariantowej (wartość funkcji równa 0 oznacza, że podany wariant nie jest tablicą wariantową) funkcja VarArrayHighBound (tablica-wariantowa, wymiar) określenie maksymalną wartości indeksu w określonym wymiarze tablicy wariantowej funkcja VarArrayLowBound (wariant, wymiar) określenie minimalnej wartości indeksu w określonym wymiarze tablicy wariantowej PP-11(49 z 95)
Moduł System.SysUtils W module System.SysUtils zdefiniowano m. in.: P typy klasowe reprezentujące warunki błędów i stany wyjątkowe oraz funkcje i procedury ich obsługi, P funkcje i procedury do przetwarzania łańcuchów zakończonych znakiem pustym, Pfunkcje i procedury do przetwarzania łańcuchów paskalowych (uzupełniają one elementy zdefiniowane w module System), P funkcje i procedury związane z datą i czasem, Pfunkcje i procedury do wykonywania różnych konwersji. PP-11(50 z 95)
Moduł System.SysUtils Wśród stałych i zmiennych zdefiniowanych w module System.SysUtils można wyróżnić m. in.: Pstałe atrybutów i trybów zbiorów, P stałe i zmienne dotyczące daty i czasu, P zmienne wykorzystywane w operacjach monetarnych, P zmienne dotyczące łańcuchów, P zmienne informujące o środowisku Windows. PP-11(51 z 95)
Moduł System.Math Moduł System.Math zawiera funkcje i procedury arytmetyczne, trygonometryczne, logarytmiczne i statystyczne, będące uzupełnieniem funkcji zdefiniowanych w module System. Ponadto w module System.Math znajdują się definicje funkcji przeznaczonych do obliczeń finansowych, które przeniesiono z pakietu Quattro Pro firmy Borland. Część wykonawcza wielu funkcji i procedur modułu System.Math została zaprogramowana bezpośrednio w asemblerze, z wykorzystaniem instrukcji zmiennopozycyjnych, operujących bezpośrednio na jednostce arytmetyki zmiennopozycyjnej procesora Pentium. PP-11(52 z 95)
Moduł System.Math przegląd ważniejszych funkcji i procedur Funkcje i procedury trygonometryczne ArcCos(x) ArcSin(x) ArcTan2(x, y) Cotan(x) SinCos(x, s, c) Tan(x) arcus cosinus x arcus sinus x arcus tangens ilorazu x przez y cotangens x sinus i cosinus x (oddzielne obliczenie sinusa i cosinusa za pomocą funkcji Sin i Cos modułu System trwa dwa razy dłużej) tangens x DegToRad(stopnie) zamiana stopni na radiany RadToDeg(radiany) zamiana radianów na stopnie PP-11(53 z 95)
Moduł System.Math przegląd ważniejszych funkcji i procedur Funkcje hiperboliczne i area funkcje ArcCosh(x) area cosinus x ArcSinh(x) area sinus x ArcTanh(x) area tangens x Cosh(x) cosinus hiperboliczny x Sinh(x) sinus hiperboliczny x Tanh(x) tangens hiperboliczny x Funkcje logarytmiczne LnXP1(x) logarytm naturalny z x+1 (funkcja zalecana do stosowania dla wartości x bliskich 0) Log10(x) logarytm dziesiętny z x Log2(x) logarytm o podstawie 2 z x LogN(p, x) logarytm o podstawie p z x PP-11(54 z 95)
Moduł System.Math przegląd ważniejszych funkcji i procedur Funkcje wykładnicze i potęgowe IntPower (podstawa, wykładnik) argument podstawa podniesiony do potęgi (całkowitej) określonej przez wykładnik Power (podstawa, wykładnik) podniesienie liczby rzeczywistej do dowolnej potęgi (nie tylko całkowitej) PP-11(55 z 95)
Moduł System.Math przegląd ważniejszych funkcji i procedur Funkcje i procedury do obliczeń statystycznych funkcja Sum (dane) obliczanie sumy elementów (dane argument odpowiadający tablicowemu parametrowi otwartemu o elementach typu Double) funkcja SumOfSquares (dane) SumsAndSquares (dane, suma, suma-kwadratów) obliczenie sumy kwadratów elementów funkcja Norm (dane) obliczenie normy euklidesowej wektora (pierwiastek z sumy kwadratów jego składowych) funkcja Mean (dane) obliczenie średniej arytmetycznej pewnej liczby elementów PP-11(56 z 95)
Moduł System.Math przegląd ważniejszych funkcji i procedur Funkcje i procedury do obliczeń statystycznych funkcja PopnVariance (dane) wyznaczenie wariancji funkcja Variance (dane) obliczenie nieobciążonego estymatora wariancji (nazwa może być myląca, gdyż funkcja nie oblicza wariancji) funkcja PopnStdDev (dane) wyznaczenie odchylenia standardowego MeanAndStdDev (dane, średnia, odchylenie-standardowe) jednoczesne wyznaczenie średniej i odchylenia standardowego funkcja RandG (średnia, odchylenie-standardowe) PP-11(57 z 95) otrzymywanie liczb losowych o rozkładzie normalnym (Gaussa)
Moduł System.Math przegląd ważniejszych funkcji i procedur Inne funkcje i procedury Frexp (x, mantysa, cecha) wyodrębnienie mantysy i cechy wielkości zmiennopozycyjnej (mantysa zmienna typu Extended, cecha zmienna typu Integer) funkcja Ceil (x) wyznaczenie najmniejszej liczby całkowitej większej od lub równej podanej wartości x funkcja Floor (x) wyznaczenie największej liczby całkowitej mniejszej od lub równej podanej wartości x PP-11(58 z 95)
Moduł System.Math przegląd ważniejszych funkcji i procedur Inne funkcje i procedury funkcja Poly (x, współczynniki) obliczenie wartości wielomianu stopnia n zmiennej x algorytmem Hornera: w n := a n, w i := w i+1 x + a i, dla i = n 1, n 2,..., 0. gdzie w 0 oznacza wyznaczaną wartość (x oznacza wartość typu Extended, a argument współczynniki odpowiada tablicowemu parametrowi otwartemu o elementach typu Double liczba elementów tej tablicy jest równa stopniowi wielomianu minus 1) PP-11(59 z 95)
Wywołanie innego programu z programu paskalowego Do wykonania tej operacji służy funkcja ShellExecute zdefiniowana w module ShellAPI. Funkcja ta nie jest opisana w systemie pomocy środowiska Delphi. Odwołuję się ona bezpośrednio do funkcji API systemu Windows o tej samej nazwie: HINSTANCE ShellExecute( HWND hwnd, // handle to parent window LPCTSTR lpoperation, // pointer to string that specifies operation to perform LPCTSTR lpfile, // pointer to filename or folder name string LPCTSTR lpparameters, // pointer to string that specifies executable-file parameters LPCTSTR lpdirectory,// pointer to string that specifies default directory INT nshowcmd // whether file is shown when opened ); PP-11(60 z 95)
Wywołanie innego programu z programu paskalowego Nagłówek funkcji ShellExecute z modułu ShellAPI ma następującą postać: function ShellExecute (hwnd : HWND; Operation, FileName, Parameters, Directory : PChar; ShowCmd : Integer) : HINST; stdcall; Bezpośrednie używanie tej funkcji w praktyce może być uciążliwe. Dlatego proponujemy korzystać z następującej, użytecznej funkcji: PP-11(61 z 95)
Wywołanie innego programu z programu paskalowego function ExecuteFile (const FileName, Params, DefaultDir : string; ShowCmd : Integer) : THandle; var zfilename, zparams, zdir : array [0..79] of Char; begin Result:=ShellExecute(Application.MainForm.Handle, nil, StrPCopy(zFileName, FileName), StrPCopy(zParams, Params), StrPCopy(zDir, DefaultDir), ShowCmd) end; FileName nazwa zbioru programowego (lub folderu), Params parametry wykonania programu, DefaultDir skorowidz (katalog) domyślny, ShowCmd określenie sposobu wyświetlania okienka: SW_SHOW (bieżący rozmiar i położenie), SW_MAXIMIZE, SW_MINIMIZE (inne stałe SW_ zob. opis funkcji API o nazwie ShellExecute w systemie pomocy) PP-11(62 z 95)
Informacje o bibliotece VCL Biblioteka VCL składa się z obiektów i komponentów, za pomocą których konstruuje się programy okienkowe przeznaczone do uruchamiania w środowisku Windows. Cała biblioteka VCL pakietu Delphi jest zaprojektowana przy użyciu dziewięciu głównych klas, z których są wyprowadzone wszystkie jej komponenty i elementy sterujące. Klasami tymi są: TObject, TPersistent, TComponent, TControl, TGraphControl, TWinControl, TSrollingWinControl, TCustomForm i TCustomControl. PP-11(63 z 95)
Informacje o bibliotece VCL Hierarchia głównych typów klasowych biblioteki VCL PP-11(64 z 95)
Informacje o bibliotece VCL Wszystkie typy klasowe biblioteki VCL można podzielić na trzy grupy: Pogólne typy klasowe wyprowadzone bezpośrednio z typu TObject, Pkomponenty, tj. typy klasowe wyprowadzone z typu TComponent, które w programach okienkowych dodaje się do formatek, Pelementy sterujące, wyprowadzone z typu TControl, które są komponentami widocznymi podczas wykonywania programu. PP-11(65 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Do wyświetlania okienek z komunikatami służą procedury ShowMessage, ShowMessageFmt, ShowMessagePos i funkcje: MessageDlg, MessageDlgPos, MessageDlgPosHelp, CreateMessageDialog, InputBox, InputQuery, TaskMessageDlg, TaskMessageDlgPos, TaskMessageDlgPosHelp, PP-11(66 z 95) które są zdefiniowane w module Vcl.Dialogs.
Informacje o bibliotece VCL Okienka z komunikatami Do wyświetlania okienek z komunikatami służy też metoda MessageBox typu TApplication (typ ten jest zdefiniowany w module Vcl.Forms). Do wyświetlania okienek z informacjami o wystąpieniach warunków błędów i stanów wyjątkowych jest przeznaczona procedura ShowException zdefiniowana w module System.SysUtils oraz metoda o takiej samej nazwie typu TApplication (zob. podręcznik lub system pomocy środowiska Delphi). PP-11(67 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Procedura ShowMessage powoduje wyświetlenie okienka z komunikatem i przyciskiem OK. Tytułem tego okienka jest nazwa zbioru wykonywalnego programu. Wywołanie procedury ShowMessage ma postać ShowMessage (łańcuch) gdzie łańcuch oznacza w ogólności wyrażenie typu string, którego wartością jest treść komunikatu wyświetlanego w okienku. PP-11(68 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Przykład ShowMessage ( Lubię programować w języku + Delphi ); PP-11(69 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Za pomocą procedury ShowMessageFmt o wywołaniu ShowMessageFmt (łańcuch, argumenty) można wyświetlić podobne okienko, jak za pomocą procedury ShowMessage, ale ze sformatowanym łańcuchem. Argumenty wywołania funkcji ShowMessageFmt są takie same, jak funkcji Format (z modułu System.SysUtils). PP-11(70 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Przykład ShowMessageFmt ( Kupiłem pakiet %s za %m, [ Delphi XE2 Professional, 750.00]); Stosując jako drugi argument inny konstruktor tablicy otwartej (np. [ Visual C++, 1800.00]), możemy zmienić nazwę pakietu i jego cenę. PP-11(71 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Procedury ShowMessage i ShowMessageFmt powodują wyświetlenie okienka z komunikatem na środku ekranu. Za pomocą procedury ShowMessagePos można spowodować wyświetlenie takiego samego okienka w określonym miejscu ekranu. Wywołanie: ShowMessagePos (łańuch, x, y) gdzie x i y oznaczają wyrażenia typu Integer, powoduje wyświetlenie okienka tak, by jego lewy górny narożnik znajdował się na ekranie w miejscu o współrzędnych (absolutnych) x i y. PP-11(72 z 95)
Informacje o bibliotece VCL Okienka z komunikatami O wiele większe możliwości redagowania okienek z komunikatami dają dwie funkcje: MessageDlg (łańcuch, rodzaj, przyciski, kontekst-pomocy [, przycisk-domyślny]) i MessageDlgPos (łańcuch, rodzaj, przyciski, kontekst-pomocy, x, y [, przycisk-domyślny]) Pierwsza funkcja wyświetla okienko na środku ekranu, a druga powoduje wyświetlenie okienka w taki sposób, że jego lewy górny narożnik zostanie umiejscowiony na ekranie w punkcie o współrzędnych absolutnych (x, y). PP-11(73 z 95)
Informacje o bibliotece VCL Okienka z komunikatami W wywołaniach obu funkcji pierwszy argument (łańcuch) definiuje wyświetlany komunikat, a kontekst pomocy (wyrażenie typu LongInt) określa numer okienka z pomocniczą informacją kontekstową, które przy aktywności okienka z komunikatem będzie wyświetlone na ekranie po naciśnięciu klawisza F1. W przypadku, gdy numer kontekstu pomocy jest równy 0, okienko dziedziczy numer z nadrzędnego elementu sterującego (jeśli takiego nie ma, okienko z informacjami pomocniczymi nie będzie wyświetlone). PP-11(74 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Argumenty rodzaj i przyciski oraz opcjonalny argument przycisk domyślny służą do określenia postaci okienka z komunikatem. Argument rodzaj jest predefiniowanego typu wyliczeniowego TMsgDlgType określonego (w module Vcl.Dialogs) następująco: type TMsgDlgType = (mtwarning, mterror, mtinformation, mtconfirmation, mtcustom); PP-11(75 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Poszczególne elementy tego typu oznaczają rodzaj komunikatu wyświetlanego w okienku, co ma wpływ na jego tytuł, a zarazem piktogram (znak graficzny będący mapą bitową): mtwarning ostrzeżenie (okienko zawiera znak wykrzyknika w żółtym trójkącie, a jego tytułem jest Warning), mterror błąd (okienko o tytule Error z białym krzyżykiem na czerwonym tle), mtinformation informacja (okienko zawiera białą literę i na niebieskim tle, a jego tytułem jest Information), mtconfirmation zapytanie (okienko o tytule Confirmation z białym znakiem zapytania na niebieskim tle), mtcustom okienko bez piktogramu o tytule będącym nazwą zbioru wykonywalnego programu. PP-11(76 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Typem argumentu przyciski jest typ zbiorowy TMsgDlgButtons, którego typem bazowym jest typ wyliczeniowy TMsgDlgBtn. Definicje tych typów (w module Vcl.Dialogs) są następujące: type TMsgDlgBtn = (mbyes, mbno, mbok, mbcancel, mbabort, mbretry, mbignore, mball, mbnotoall, mbyestoall, mbhelp, mbclose); TMsgDlgButtons = set of TMsgDlgBtn; Poszczególne elementy typu TMsgDlgBtn służą do oznaczenia rodzaju przycisku wyświetlanego w okienku i opcjonalnego argumentu przycisk domyślny. PP-11(77 z 95)
Informacje o bibliotece VCL Okienka z komunikatami W module Vcl.Dialogs zdefiniowano także pięć stałych, które predefiniują zbiory z dwoma lub trzema najczęściej występującymi zestawami przycisków: mbyesnocancel zbiór definiujący przyciski z napisami Yes, No i Cancel, mbyesallnoallcancel zbiór definiujący przyciski z napisami Yes, YesToAll, No, NoToAll i Cancel, mbokcancel zbiór określający przyciski z napisami OK i Cancel, mbabortretryignore zbiór definiujący przyciski z napisami Abort, Retry i Ignore, mbabortignore zbiór definiujący przyciski z napisami Abort i Ignore. Stałe te oznaczają odpowiednie zbiory, a więc ich użycie jako argumentu przyciski nie wymaga stosowania nawiasów kwadratowych. PP-11(78 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Wartością funkcji MessageDlg (a także funkcji MessageDlgPos) jest wartość typu Integer określająca, który z przycisków powodujących zamknięcie okienka został naciśnięty (zamknięcia nie powoduje przycisk z napisem Help). Wartość tę można sprawdzić przez jej przyrównanie do jednej ze stałych: const mrnone = 0; nie naciśnięto żadnego przycisku mrok = idok; naciśnięto przycisk OK mrcancel = idcancel; naciśnięto przycisk Cancel (lub zamknięto okienko za pomocą piktogramu zamknięcia) mrabort = idabort; naciśnięto przycisk Abort mrretry = idretry; naciśnięto przycisk Retry mrignore = idignore; naciśnięto przycisk Ignore mryes = idyes; naciśnięto przycisk Yes mrno = idno; naciśnięto przycisk No mrall = mrno+1; naciśnięto przycisk All mrnotoall = mrall+1; naciśnięto przycisk No to All mryestoall = mrnotoall+1; PP-11(79 z 95) naciśnięto przycisk Yes to All
Informacje o bibliotece VCL Okienka z komunikatami Przykłady 1)MessageDlg ( Nie zakończono wprowadzania + danych, mtwarning, mbabortretryignore, 0) Przyciskiem domyślnym (określanym domyślnie) jest przycisk Retry. PP-11(80 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Przykłady 2)MessageDlgPos ( Czy umiesz już programować + w języku Delphi?, mtconfirmation, [mbyes, mbno], 0, 200, 100, mbno) Lewy górny narożnik okienka będzie znajdował się w punkcie o współrzędnych ekranowych (200, 100), a przyciskiem domyślnym (określonym przez programistę) będzie przycisk No. PP-11(81 z 95)
Informacje o bibliotece VCL Okienka z komunikatami W funkcjach MessageDlg i MessageDlgPos ewentualne wyświetlanie informacji pomocniczych wymaga przygotowania systemu pomocy i podania numeru odpowiedniej informacji kontekstowej ze zbioru pomocy skojarzonego z danym programem. Informacje te mogą być pobierane także z innego (odpowiednio przygotowanego) zbioru pomocy za pomocą funkcji MessageDlgPosHelp o wywołaniu MessageDlgPosHelp (łańcuch, rodzaj, przyciski, kontekst-pomocy, x, y, nazwa-zbioru-pomocy [, przycisk-domyślny]) PP-11(82 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Jeśli jakieś okienko z komunikatem jest wyświetlane wiele razy w programie, to zamiast wielokrotnego wykonywania którejś z podanych bliżej funkcji lub procedur wygodniejsze jest utworzenie odpowiedniego obiektu-okienka dialogowego za pomocą funkcji CreateMessageDialog. Jej wywołanie jest następujące: CreateMessageDialog (łańcuch, rodzaj, przyciski, [, przycisk-domyślny]) przy czym wszystkie argumenty poznaliśmy przy okazji opisywania poprzednich funkcji. PP-11(83 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Przykład Jeśli zadeklarujemy zmienną: var komunikat : TForm; (konieczna jest deklaracja modułu Vcl.Forms), to po wykonaniu instrukcji komunikat:=createmessagedialog ( Lubię programować w języku Delphi, mtinformation, [mbok]); każdorazowe wykonanie instrukcji komunikat.showmodal; spowoduje pojawienie się na ekranie następującego okienka: Zwolnienie pamięci zajętej przez obiekt komunikat uzyskamy przez wywołanie komunikat.free; PP-11(84 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Metoda-funkcja MessageBox typu TApplication umożliwia dobór przycisków w okienku, a ponadto określenie tytułu okienka. Jej wywołanie ma postać zmienna-klasowa.messagebox (łańcuch, nagłówek, charakterystyki) gdzie zmienna klasowa powinna być zmienną typu TApplication (najczęściej stosuje się predefiniowaną zmienną Application). Łańcuch (typu PChar) określa tekst wyświetlany w okienku, a nagłówek (też typu PChar) tytuł okienka. Za pomocą charakterystyk (typu LongInt) określa się nie tylko przyciski, które mają wystąpić w okienku, ale także wyświetlane piktogramy, przyciski domyślne, sposób justowania tekstu itp. PP-11(85 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Do określenia charakterystyk służą stałe o przedrostku mb_ zdefiniowane w module Winapi.Windows (zob. system pomocy). Stałe te mogą być łączone za pomocą operatora or. Wartość funkcji MessageBox (typu Integer) określa wybór odpowiedniego przycisku w okienku. Do zbadania tej wartości można użyć jednej ze stałych o przedrostku id, które są także zdefiniowane w module Winapi.Windows. PP-11(86 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Przykład Application.MessageBox ( Brak pamięci do + wykonania wszystkich operacji, Ostrzeżenie, mb_ok or mb_iconwarning); PP-11(87 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Funkcja InputBox o wywołaniu InputBox (nagłówek, komunikat, tekst-domyślny) powoduje wyświetlenie okienka o tytule podanym pierwszym argumentem z tekstem określonym argumentem komunikat, obok którego zostanie wyświetlone podokienko wejściowe z tekstem określonym trzecim argumentem. W okienku będą występować dwa przyciski: OK i Cancel. Po wyborze przycisku OK. tekst wpisany w podokienku wejściowy stanie się wartością funkcji, a po wyborze przycisku Cancel wartością funkcji będzie tekst domyślny. PP-11(88 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Przykład InputBox ( Wejście, Wprowadź tekst, Tu napisz tekst ); Wartość funkcji (typu string) będzie uzależniona od tekstu wpisanego (lub nie) w podokienku wejściowym i wyboru przycisku. PP-11(89 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Funkcja InputQuery o wywołaniu InputQuery (nagłówek, komunikat, tekst) powoduje wyświetlenie okienka o tytule podanym argumentem nagłówek z tekstem określonym argumentem komunikat, po którym zostanie wyświetlone podokienko wejściowe z tekstem określonym trzecim argumentem (musi to być zmienna). Użytkownik może zmienić ten tekst, który stanie się nową wartością tej zmiennej. W okienku będą występować dwa przyciski: OK i Cancel. Po wyborze przycisku OK wartością funkcji jest wartość logiczna True, a po wyborze przycisku Cancel lub naciśnięciu przycisku Esc S False. PP-11(90 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Funkcja PromptForFileName powoduje wyświetlenie okienka do wczytania lub zapisu pliku o podanym tytule. Jej wywołanie ma postać PromptForFileName (nazwa-pliku, filtr, domyślne-rozszezrenie-nazwy-pliku, tytuł, początkowy-katalog, rodzaj-okienka); Domyślnymi wartościami parametrów filtr, domyślne rozszerzenie nazwy pliku, tytuł i początkowy katalog są łańcuchy puste. Domyślna wartość False ostatniego parametru oznacza, że zostanie wyświetlone okienko do wczytania pliku. Postać filtru: opis-maski maska [ opis-maski maska].... Wartością funkcji jest wartość logiczna True, gdy użytkownik określił plik i wybrał w okienku przycisk Zapisz lub Otwórz. Początkowa nazwa pliku zostanie zmieniona na nazwę wprowadzoną w okienku. PP-11(91 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Przykład Niech rozdział oznacza zmienną typu string, a OK zmienną typu Boolean. Wykonanie instrukcji: rozdział:= Delphi-XE2'; OK:=PromptForFileName (rozdział, Pliki Corel WordPerfect (*.wpd) *.WPD,, Pliki książki o Delphi,, False); w systemie Windows Vista spowoduje ukazanie się na ekranie następującego okienka PP-11(92 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Przykład Jeśli w okienku tym użytkownik wybierze plik Delphi-Appl, po czym przycisk Otwórz, to zmiennej OK zostanie przypisana wartość logiczna True, a zmiennej rozdział S łańcuch C:\Users\...\Documents \Delphi-Appl.wpd. PP-11(93 z 95)
Informacje o bibliotece VCL Okienka z komunikatami Do wyświetlania okienek z komunikatami służą także funkcje TaskMessageDlg, TaskMessageDlgPos i TaskMessageDlgPosHelp. Argumenty ich wywołania oraz działania są takie same, jak funkcji odpowiednio MessageDlg, MessageDlgPos i MessageDlgPosHelp. PP-11(94 z 95)
Ufff!!!!! Dzisiaj nareszcie koniec...... ale ciąg dalszy nastąpi! PP-11(95 z 95)