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í, Unit, Ukázkový příklad, DEL, Díl, Knihovna, Dnešní pokračování, Unity, TRI, Trik, DLL



25 nejlepších filmových parodií, které můžete vidět. Víme, kde je najdete online

25 nejlepších filmových parodií, které můžete vidět. Víme, kde je najdete online

Filmové parodie jsou divácky velmi vděčné a mezi filmaři oblíbené. Tvůrci v nich mohou totiž zcela beztrestně vykrádat cizí díla a v jejich nápodobě popustit uzdu své fantazii. Vybrali jsme nejlepší zahraniční i české parodie.

Jaromír PukMarek Čech
Filmy, které musíte vidět
Vy a počítač: Poskytovatelů internetu je mnoho, dobrých možností ale méně
Vladislav Kluska
Vy a počítačPřipojení k internetuAnkety
Co vy na to? Kryptoměny bude běžné využívat pro každodenní platby
Vladislav Kluska
Co vy na to?BitcoinKryptoměnyAnkety
25 filmů, které musíte vidět, dokud jste ještě na světě. Víme, kde si je můžete pustit online

25 filmů, které musíte vidět, dokud jste ještě na světě. Víme, kde si je můžete pustit online

Vybrali jsme 25 jedinečných filmů napříč žánry a historií. Nabídnou to nejzajímavější ze světové i české filmové tvorby. Je to základní výběr, který byste podle nás měli vidět, pokud chcete mít přehled o kinematografii.

Vojtěch Malý
Filmy, které musíte vidět