[Delphi]DLL & wykorzystywanie go w programie

Status
Zamknięty.

0wn3r

Były Moderator
Dołączył
Marzec 10, 2007
Posty
1330
DLL & wykorzystywanie go w programie
---------------
Od razu zaznaczam, że ten temat jest dla początkujących. Napiszemy tutaj małą bibliotekę .DLL i wykorzystamy ją w programie.
---------------
Pisanie dynamicznej biblioteki(czyt. DLL) jest prostsze niż się wydaje. Ja podczas nauki Object Pascal'a wyobrażałem sobie bardzo skomplikowane operacje, które zamieszczam w tej bibliotece, a potem ją wywołuje w programie. Oprócz tego, iż ten artykuł jest na temat pisania biblioteki, odbiegnę trochę od tematu. Jeśli pisaliście już jakieś bardziej zbudowane aplikację, można było sprawdzić ich działanie poprzez debugger wbudowany w Borland Delphi. Mimo iż zazwyczaj debugger służy do śledzenia działania aplikacji PE(Portable Executable, inaczej .exe), można nim śledzić kod swojej dynamicznej biblioteki(zastawiając pułapki, ale trzeba ustalić jaki program będzie z danej biblioteki korzystał).
---------------
DLL - w środowisku Windows biblioteka współdzielona (z ang. shared library), która przechowuje implementacje różnych funkcji (podprogramów) programu i/lub zasoby programu. Biblioteka DLL sama nie może wywoływać swoich funkcji (wykorzystywać zasobów w niej zawartych), może to zrobić jedynie program EXE.

Definicja dynamicznej biblioteki, źródło: www.wikipedia.pl
---------------
Koniec nudnych definicji i bzdur. Pewnie chcielibyście już przejść do konkretów. Oto one.
---------------
Uruchamiamy Borland Delphi, wchodzimy do File > New > Other i wybieramy DLL Wizard. Zrzut ekranu:
http://img395.imageshack.us/my.php?image=dllfl5.jpg
---------------
Utwórzcie teraz jakiś folder na pulpicie, np. DLL i zapiszcie tam projekt. Teraz piszemy:
Kod:
library Matematyka;
uses SysUtils, Classes;
function Sqr(Num: Integer): Integer; export;
begin
Sqr := Num * Num;
end;

exports
Sqr;
begin
end.
Ktoś sobie pomyśli, że sobie jaja z was robię. Otóż nie, chcę wam przedstawić, że pisanie bibliotek nie jest jakieś bardzo skomplikowane, tylko trzeba mieć pomysł co chce się napisać. Gdy przepisaliście to już do waszego IDE, naciśnijcie Ctrl + F9(kompilacja). Powinien się wam pokazać piękny plik DLL.
---------------
Stwórzcie nowy projekt. Dodajcie na formę następujące komponenty:
- 3x Label
- 1x Button
- 1x Edit
Ustawcie to sobie jak chcecie, ja mam tak:
http://img399.imageshack.us/my.php?image=formga6.jpg
---------------
Przed implementation dodajcie:
Kod:
function Sqr(Num: Integer): Integer; far; external 'matematyka.dll'
Teraz wklepcie kod do naszego przycisku:
Kod:
procedure TForm1.Button1Click(Sender: TObject);
begin
Label3.Caption := IntToStr(Sqr(StrToInt(Edit1.Text)));
end;
---------------
Wyżej przedstawiony kod, oblicza po prostu kwadrat podanej przez nas liczby, korzystając z biblioteki przez nas stworzonej. Jeśli nasz program nie znajdzie biblioteki matematyka.dll wyświetli błąd, że nie potrafi znaleźć biblioteki. Jeśli mu jednak umieścimy tą bibliotekę, po prostu się załączy i będzie poprawnie pracował. Nie dało się moim zdaniem tego prościej przedstawić. Napisałem ten artykuł, by uświadomić innym osobom(jak i kiedyś sobie), że pisanie bibliotek nie jest takie trudne, jak się wydaje. Mam nadzieje że ten prosty przykład wam to wyjaśnił.
// kolejny artykuł jaki napiszę, będzie to uzupełnienie tematu "Obsługi plików z poziomu aplikacji"
 
Status
Zamknięty.
Do góry Bottom