Tipy a triky v Delphi, díl 171. – DLL knihovny podruhé

Po minulém letmém představení DLL knihoven budeme v tématu pokračovat. Dnes si ukážeme o něco složitější příklad a do knihovny budeme ukládat funkce.
Minulý příklad byl vlastně velmi jednoduchý a zdrojový kód knihovny byl prakticky prázdný, neboť jsme v ukázkové aplikaci využívali pouze zdroje, které byly po kompilaci do knihovny uloženy. Konkrétně se jednalo o ikonu. Reálnější použití však spočívá v uložení procedur a funkcí a to je právě náplní dnešního pokračování.

Ani dnešní příklad však nebude nijak složitý. Začneme stejně jako minule tvorbou nové DLL knihovny. Zvolením příslušné položky v menu nám Delphi vygenerují prakticky prázdný soubor, základ naší budoucí knihovny. Nyní je čas přidat naší funkci. Pro ukázku zvolíme něco jednoduchého, pouze vypíšeme textovou zprávu prostřednictvím funkce ShowMessage. Kvůli použití této funkce musíme mezi používané unity zařadit i Dialogs. Pak již stačí jen napsat naši funkci. Celý výsledný kód knihovny pak bude vypadat nějak takto:

library Project1;

uses
  SysUtils, Classes, Dialogs;

{$R *.res}

procedure Zprava;
begin
  ShowMessage(`Zpráva vyvolaná z DLL knihovny`);
end;

exports Zprava;

end.

V kódu je vidět na první pohled něco neobvyklého navíc a tím je část exports. K čemu je dobrá? V ní prostě specifikujeme, které funkce knihovny budou přístupné volání z vnějšku, protože samozřejmě ne všechny procedury a funkce musí být nutně externě přístupné. Mohou sloužit pouze jako pomocné, čistě pro vnitřní potřebu knihovny. Po zkompilování najdeme v adresáři projektu naší hotovou DLL knihovnu.

Na řadě je aplikace. Vytvoříme nový projekt a na formulář umístíme pouze tlačítko, které bude volat externí funkci. Stejně jako minule nezapomeňte, že vytvořenou knihovnu musíte nakopírovat do složky vytvářené aplikace. Kód projektu pak vypadá takto:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  procedure Zprava; external `Project1.dll`;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Zprava;
end;

end.

Způsob volání funkce z knihovny je jednoduchý. V deklaraci funkce uvedeme její název a dále musíme specifikovat, že se nachází v externím zdroji, jehož název (tedy název souboru s knihovnou) hned následuje. Postup je to tedy velmi jednoduchý a pro základní funkce dobře použitelný. Složitější příklady si ukážeme zase někdy příště a jelikož je dnešní příklad opravdu velmi krátký a přehledný a celý zdrojový kód vidíte před sebou, není pro tentokrát co stahovat.

Zdroj a inspirace: Zarko Gajic

Diskuze (3) Další článek: Živě hledá autora krátkých zpráv

Témata článku: Software, Windows, Programování, Knihovna, DLL, Díl, Ukázkový příklad, Unity, Trik, Unit


Určitě si přečtěte

Našli jsme 22 schopných internetových prohlížečů: Vyberte si, který vám nejvíc sedne

Našli jsme 22 schopných internetových prohlížečů: Vyberte si, který vám nejvíc sedne

** Není jen Chrome, Firefox, Edge či Opera. Na výběr máte mnohem více! ** Internetové prohlížeče se liší funkcemi, zaměřením i designem. Našli jsme 22 použitelných prohlížečů pro Windows ** Vyberte si prohlížeč, který vám bude nejvíce vyhovovat

Karel Kilián | 30

Šéf amerického Red Hatu: Odpojte Brno od internetu a zhroutíme se

Šéf amerického Red Hatu: Odpojte Brno od internetu a zhroutíme se

** V Česku najdete hromadu skvělých vývojářů ** Mnozí z nich přispívají do open-source ** Třeba v brněnském Red Hatu

Jakub Čížek | 51

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

** Teplotní extrémy dokážou překvapit. Seznamte se s rekordy v Česku i ve světě ** Rekordní hodnoty jsou mnohdy až k neuvěření ** Zjistěte, kdy ke bylo největší horko, zima, déšť či vítr

Karel Kilián | 7

Velká jarní aktualizace Windows 10: Co přináší April 2018 Update

Velká jarní aktualizace Windows 10: Co přináší April 2018 Update

** Po necelém půl roce je tu další aktualizace Windows ** Přináší časovou osu nebo sdílení souborů jako na mobilu ** A také Application Guard, který umí virtualizovat Edge

Jakub Čížek | 143

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 42

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

** Pornografie údajně představuje třetinu internetové obsahu a je technologický tahounem ** Do erotického obsahu postupně zasahuje i virtuální realita ** Kromě vizuálního vjemu se pracuje také na virtuálním uspokojení toho hmatového

Jan Dudek | 28


Aktuální číslo časopisu Computer

Kdy necháme řídit chytrá auta?

6 Wi-Fi Mesh systémů ve velkém testu

Srovnali jsme 7 sportovních kamer

Znáte pravidla pro létání s drony?