Witam,
Ładowanie biblioteki następuje za pomocą polecenia LoadLibrary. To nie wszystko bowiem dla zmiennej DLL przypisaliśmy bibliotekę. Zauważ, że umieściłem zmienną ShowForm, która nie jest żadnego konkretnego typu, ale oznacza to, że zmienna będzie procedurą. Do tej zmiennej przypisany zostaje adres proceudry znajdującej się w bibliotece (GetProcAddress). Jeżeli wartość ta równa się nil to znaczy, że proceudry lub funkcji o tej nazwie nie można odnaleźć w bibliotece. Na końcu biblioteka jest zwalniana z pamięci.
procedure TForm1.Button1Click(Sender: TObject);
var
DLL : THandle; // uchwyt biblioteki
ShowForm : procedure;
begin
DLL := LoadLibrary('LibSample.dll'); // laduj biblioteke
try
@ShowForm := GetProcAddress(DLL, 'ShowForm'); // laduj procedure
if @ShowForm=nil then raise Exception.Create('Bład - nie mogę znaleźć proceudry w bibliotece!');
ShowForm; // wywolaj procedure
finally
FreeLibrary(DLL); // wreszcie zwolnij pamiec
end;
end;
A jak to zrobic, gdyby procedura ShowForm miala 2 parametry (np. String, String) potrzebne do jej uruchomienia?
Pozdrawiam