Ich habe bisher keinen Beitrag gefunden, der kurz Quelltexte zeigt, wie man eine
DLL einbinden kann. Ich gehe hier nicht auf das Programmieren von DLLs ein oder was der Vortei der beiden genannten Methoden, sondern nur, wie das funktioniert.
0. Beispiel-Funktion
Für die beiden folgenden Punkte gehen wir davon, aus dass eine
DLL namens
dptest.dll im gleichen Verzeichnis, wie die Anwendung liegt und folgende Funktion exportiert:
function Addieren(a, b: integer): integer;
1. Direktes Einbinden
Für das direkte Einbinden einer Funktion muss im
interface-Abschnitt folgendes eingefügt werden:
Delphi-Quellcode:
const
DLLNAME = '
dptest';
// Unter Win9x funktioniert das, unter NT/XP/etc. MUSS AUF JEDENFALL die Endung mit angegeben werden!
{...}
function Addieren(a, b: integer): integer;
external DLLNAME;
stdcall;
1. Dynamisches Einbinden zur Laufzeit
Empfohlen, wenn sich zum Beispiel der Dateiname der
DLL ändern kann oder man sicher gehen will, dass die
DLL wirklich vorhanden ist (nicht dass ein User die "versehentlich" gelöscht hat).
Delphi-Quellcode:
type
TAddierenProc =
function(a, b: integer): integer;
stdcall;
var
hDLL: THandle;
// Handle zur DLL
iRes: integer;
// Ergebnis der Funktion
FarProc: TAddierenProc;
sDLLPath:
string;
begin
sDLLPath := ExtractFilePath(Application.ExeName) + '
dptest.dll';
hDLL := LoadLibrary(sDLLPath);
if hDLL = 0
then begin
ShowMessage('
DLL konnte nicht geladen werden.');
Exit;
end;
try
FarProc := GetProcAddress(hDLL, '
Addieren');
if Assigned(FarProc)
then
iRes := FarProc(1, 2);
except
ShowMessage('
Funktion der DLL konnte nicht ausgeführt werden.');
end;
end;
Beide Methoden haben ihre Vor- und Nachteile.
Chris