Tworzenie bibliotek DLL z możliwością wykorzystania w innych programach.
1. Tworzenie bibliotek
Szkielet biblioteki uzyskamy za pomocą „Wizarda” Delphi. Aby z niego skorzystać wyszukaj w menu File –> New –> Other… –> DLL Wizard, a następnie kliknij „OK”.
Rzucającą się w oczy różnicą będzie zamiana „Program Project1” na „Library Project1”, czyli po prostu zmiana deklaracji z programu na bibliotekę.
Funkcje, które mają być wykonywane przez inne aplikacje umieszczamy w exports.
Szczegóły zamiany można zobaczyć na przykładzie poniżej:
Przed zamianą :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
program Example; uses Forms, Unit1; {$R *.RES} begin Application.CreateForm(TForm1, Form1); Application.Run; end; |
Po zamianie :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
library Example; uses Unit1; {$R *.RES} exports FunctionName; begin end; |
2. Odczyt funkcji z biblioteki
Aby móc odczytać dane z naszej biblioteki musimy znać nazwy funkcji jakie ona posiada oraz jakiego typu zwraca wartości. Oto przykład odwołania się do biblioteki DLL:
1 |
function GetString : string ; far; stdcall; external 'DLLFRAME'; |
Funkcja zwraca tekst utworzony przez funkcję GetString znajdującą się w bibliotece. DLLFRAME to nazwa biblioteki do której się odwołujemy. Po zadeklarowaniu funkcji nadszedł czas ją wykorzystać:
1 2 3 4 5 6 7 |
procedure Sprawdz; begin MessageDlg( GetString, mtInformation, [ mbOK ], 0 ) ; end; |
Procedura wyświetli nam okno z komunikatem pochodzącym z funkcji GetString;
3. Przykład biblioteki
Funkcja będzie zwracać sumę dwóch liczb:
1. Plik projektu
1 2 3 4 5 6 7 8 9 10 |
library Calc; uses AddUnit; {$R *.RES} exports Add; begin end; |
2. Unit z funkcją
1 2 3 4 5 6 7 8 9 10 11 |
Unit AddUnit; ... function Add(num1, num2 : Integer) : Integer; stdcall; begin Add := num1 + num2; end; |
3. W programie umieszczamy :
1 |
function Add(num1, num2 : integer) : Integer; stdcall; external 'Calc'; |
4. Utwórzmy Label1, Button1 i zapiszmy :
1 2 3 4 5 6 7 |
procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := IntToStr( Add(1, 2) ); end; |
Po kliknięciu przycisku na Label1 pojawi się suma liczb 1 oraz 2. Są to zaledwie podstawy tworzenia bibliotek DLL. Więcej informacji uzyskasz z kursu znajdującego się w dziale download.