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, DLL, Díl, Knihovna, Unity, Trik


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

Intel vs. AMD: souboj vícejádrových procesorů začal. AMD zesměšňuje Intel neuvěřitelně nízkou cenou

Intel vs. AMD: souboj vícejádrových procesorů začal. AMD zesměšňuje Intel neuvěřitelně nízkou cenou

** AMD představilo nové levné procesory až s 32jádry ** AMD útočí na serverový i domácí trh Intelu ** Intel nemá konkurenceschopnou nabídku

Karel Javůrek | 85

Lenovo přivezlo na IFA 2018 skutečné inovace. Tyto tři notebooky stojí za to

Lenovo přivezlo na IFA 2018 skutečné inovace. Tyto tři notebooky stojí za to

** Yoga C930 nabídne revoluční reproduktor v kloubu displeje ** Yoga Book C930 představuje zdařilý reparát podivného Yoga Booku ** ThinkPad X1 Extreme se může pochlubit extrémní výbavou v tenkém těle

Tomáš Holčík | 16

Byli tam! Důkazy o přistání na Měsíci, Lunochody i čínská sonda jsou vidět z vesmíru

Byli tam! Důkazy o přistání na Měsíci, Lunochody i čínská sonda jsou vidět z vesmíru

** Sonda LRO pořídila z oběžné dráhy Měsíce zajímavé snímky ** Jsou na nich vidět artefakty všech misí programu Apolla, které přistály na povrchu Měsíce ** Jde například o části lunárních modulů, rovery a dokonce i vlajky

Petr Kubala | 65

Jak a proč používat alternativní DNS: Zrychlí internet a odblokuje weby

Jak a proč používat alternativní DNS: Zrychlí internet a odblokuje weby

** Alternativní DNS servery mohou zpříjemnit surfování na internetu ** Existuje několik ověřených alternativ, nejen známé DNS od Googlu ** Alternativní DNS však mají i své nevýhody, pozor na ně

Petr Březina | 33

V doupěti hackerů na brněnské FIT: Ukázali nám útoky na Bluetooth i vlastní chytré krabičky

V doupěti hackerů na brněnské FIT: Ukázali nám útoky na Bluetooth i vlastní chytré krabičky

** Internet je plný malwaru, to už dnes ví každý ** Víte ale, že lze útočit třeba i na Bluetooth? ** Navštívil jsem hackery z brněnského FITu

Jakub Čížek | 1

PortraitPro: Vyzkoušeli jsme program, který prý udělá z každé „žáby“ krasavici

PortraitPro: Vyzkoušeli jsme program, který prý udělá z každé „žáby“ krasavici

** V digitálním světě nemůžete věřit všemu ** Nová generace 3D fotoeditorů zvládne divy ** Vyzkoušeli jsme PortraitPro, který vám změní i kontaktní čočky

Jakub Čížek | 10

Co je srdce nového iPhonu? Apple A12 Bionic, první 7nm čip nabitý výkonem

Co je srdce nového iPhonu? Apple A12 Bionic, první 7nm čip nabitý výkonem

** Apple v nových iPhonech používá nový vlastní čip A12 Bionic ** Jde o první 7nm čip na světě ** Kromě vyššího klasického výkonu dostala neuronová část masivní navýšení rychlosti zpracování umělé inteligence

Karel Javůrek | 38

Vyzkoušeli jsme eObčanku a přihlásili se s ní na weby úřadů. Vážně to funguje!

Vyzkoušeli jsme eObčanku a přihlásili se s ní na weby úřadů. Vážně to funguje!

** Máme eObčanku, máme čtečku, vyzkoušeli jsme přihlášení na weby úřadů. ** Objevily se drobné problémy, podařilo se nám je vyřešit. ** Používání eObčanky pro online identifikaci je velmi pohodlné.

Marek Lutonský | 35


Aktuální číslo časopisu Computer

Megatest: 13 grafických karet

Srovnání 7 dokovacích stanic s USB-C

Jak na perfektní noční fotografie

Kvalitní zdroje informací pro sebevzdělávání