Laboratorium informatyki II. Język Pascal. Semestr letni.
Ćwiczenie 11.
Programowanie z wykorzystaniem modułów i bibliotek DLL
Cel ćwiczenia: projektowanie bibliotek DLL oraz modułów importowych, wykorzystujących funkcje biblioteczne; funkcja wyjścia z biblioteki DLL; wyprowadzanie identyfikatora
biblioteki oraz adresów liniowych funkcji bibliotecznych; import statyczny oraz dynamiczny funkcji bibliotecznych.
1. Opracować funkcje kalkulatora realizującego dodawanie, odejmowanie, mnożenie i dzielenie liczb całkowitych typu LongInt modulo 16. Przyjąć definicję funkcji modulo taką jak w niniejszym opracowaniu (MODC). Funkcje kalkulatora umieścić w bibliotece DLL. Zainstalować własną procedurę wyjścia z biblioteki. Procedura wyjścia powinna wypisać na ekranie nazwę usuwanej biblioteki oraz jej identyfikator. Utworzyć moduł importowy, w którym procedury kalkulatora będą dołączane przez nazwę lub indeks. Na początku programu głównego wyświetlić nazwę, identyfikator biblioteki DLL oraz adresy liniowe funkcji kalkulatora.
2. Opracować wersję zadania 1, która umożliwia import dynamiczny funkcji kalkulatora za pomocą procedur standardowych LoadLibrary oraz GetProcAddress.
Function MODC(a,b : LongInt) : LongInt;
begin
if b=0 then begin MODC:= -1; exit; end;
if (a >= b) AND (a>=0) AND (b >0) then
begin repeat a:=a-b; until (a < b); MODC:=a; exit; end;
if (a >= 0) AND (b < 0) then
begin repeat a:=a + b; until ( a < ABS(b)); MODC:= a; exit; end;
if (a < b) AND (a >= 0) AND (b > 0) then begin MODC:=a; exit; end;
if (a < 0) AND (b > 0) then
begin repeat a:=a + b; until (a >= 0); MODC:=a; exit; end;
if (a < 0) AND (b < 0) then
begin repeat a:=a - b; until (a >= 0); MODC:=a; exit; end;
MODC:=a;
end;