mistrovstvi v delphi 6 cz - 156
P ředpokládejme, že máme dynamickou knihovnu DLL s názvem Max Li b.dl 1 , která obsa huje funkci:
function M a x ď l , 12: integer): integer;
T ato funkce vrací vyšší ze dvou čísel typu i n teger, k terá jsou jí předána jako argumenty. J ednotka s definicí rozhraní by pak vypadala asi takto:
u n i t MaxUnit; interface f u n c t i o n Max( I I , 12: i n t e g e r ) : integer;
i mpl ementation f unction Max: external e nd.
' MAXLIB';
Určitě si všimnete, že funkce Max() není definována. Klíčové slovo e xternal n aznačuje, že f unkce je součástí určené dynamické knihovny. Při běhu aplikace je dynamická knihovna D LL načtena do paměti automaticky a jakákoliv volání funkce Max O j sou svázána s funkcí MaxO v d ynamické knihovně. Tento postup popisuje jeden ze dvou způsobů, jak načíst d ynamickou knihovnu DLL: první se nazývá implicitní načítáni a z působí, že systém Win dows načte dynamickou knihovnu při spuštění aplikace automaticky. Druhý způsob se na zývá explicitní načítání d ynamické knihovny a popsán podrobněji dále v této kapitole.
Proč používat knihovny DLL?
P ro použití dynamických knihoven DLL existuje více důvodů, některé z nich již byly zmí něny dříve. Obecně platí, že dynamické knihovny se používají pro sdílení kódu nebo sy stémových prostředků, pro skrytí implementace kódu nebo nízkoúrovňových systémo vých procedur či při návrhu uživatelských ovládacích prvků. Všechny tyto důvody v ná sledujících oddílech podrobněji popíšeme.
Sdílení kódu, prostředků a dat více aplikacemi
V t éto kapitole jsme již uvedli, že nejobvyklejším důvodem pro vytváření knihoven DLL j e sdílení kódu. Na rozdíl od jednotek, které umožňují sdílet kód v různých aplikacích v D elphi, umožňují dynamické knihovny DLL sdílet kód s jakoukoliv aplikací Win dows, jež může volat funkce uložené v dynamických knihovnách. D ynamické knihovny také umožňují sdílet prostředky - například obrázky, písma nebo i kony, které by jinak musely být součástí souboru prostředků a sestaveny přímo jako sou část aplikace. V případě, že se tyto prostředky umístí do knihovny DLL, je může využívat více aplikací bez nutnosti použití paměti, kterou by jinak tyto prostředky v každé aplika ci zvlášť zabíraly. V p rostředí lóbitového systému Windows měly knihovny DLL svůj vlastní datový seg ment, takže všechny aplikace, které tuto knihovnu sdílely, mohly přistupovat ke stejným d atům - globálním a statickým proměnným knihovny DLL. V prostředí systému Win32 je vše jinak. Protože obraz knihovny DLL je mapován na adresový prostor každého proce-
- Pro možnost psaní komentářů se přihlašte nebo zaregistrujte.


































































