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

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

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


Aktuální číslo časopisu Computer

26 procesorů v důkladném testu

Zhodnotili jsme 18 bezdrátových reproduktorů

Jak fungují cash back služby?

Pohlídejte své děti na internetu