Hallo Zusammen,
ich möchte meherere Procedures bzw. Functions in einer DLL ablegen, die dynamisch eingebunden werden soll.
procedure Procedure001(aInteger: integer);
procedure Procedure002(aString: string);
Die Poceduren in der DLL werden mit folgenden Poceduren im Hauptprogramm aufgerufen:
procedure CallProcedure001(aInteger: integer);
var
DLLHandle: THandle;
FuncPtr: TFarProc;
ThisProcedure: procedure(aInteger: integer);
begin
DLLHandle:=LoadLibrary(PChar(DLLFileName));
FuncPtr:=GetProcAddress(DLLHandle,PChar(ProcedureN ame));
if FuncPtr<>nil then
begin
@ThisProcedure:=FuncPtr;
ThisProcedure(aInteger);
FuncPtr:=nil;
end;
FreeLibrary(DLLHandle);
end;
procedure CallProcedure002(aString: string);
var
DLLHandle: THandle;
FuncPtr: TFarProc;
ThisProcedure: procedure(aString: string);
begin
DLLHandle:=LoadLibrary(PChar(DLLFileName));
FuncPtr:=GetProcAddress(DLLHandle,PChar(ProcedureN ame));
if FuncPtr<>nil then
begin
@ThisProcedure:=FuncPtr;
ThisProcedure(aString);
FuncPtr:=nil;
end;
FreeLibrary(DLLHandle);
end;
Die Proceduren CallProcedure001 und CallPracedure002 unterscheiden sich ja kaum. Deshalb möchte ich, sie zu einer einzigen zusammenzufassen.
Dabei wäre es notwendig, den Typ der aufgerufenen DLL-Pocedure als Parameter zu übergeben.
Leider weis ich nicht, ob das geht und wie man das mach.
Danke für Eure Hilfe.
ich möchte meherere Procedures bzw. Functions in einer DLL ablegen, die dynamisch eingebunden werden soll.
procedure Procedure001(aInteger: integer);
procedure Procedure002(aString: string);
Die Poceduren in der DLL werden mit folgenden Poceduren im Hauptprogramm aufgerufen:
procedure CallProcedure001(aInteger: integer);
var
DLLHandle: THandle;
FuncPtr: TFarProc;
ThisProcedure: procedure(aInteger: integer);
begin
DLLHandle:=LoadLibrary(PChar(DLLFileName));
FuncPtr:=GetProcAddress(DLLHandle,PChar(ProcedureN ame));
if FuncPtr<>nil then
begin
@ThisProcedure:=FuncPtr;
ThisProcedure(aInteger);
FuncPtr:=nil;
end;
FreeLibrary(DLLHandle);
end;
procedure CallProcedure002(aString: string);
var
DLLHandle: THandle;
FuncPtr: TFarProc;
ThisProcedure: procedure(aString: string);
begin
DLLHandle:=LoadLibrary(PChar(DLLFileName));
FuncPtr:=GetProcAddress(DLLHandle,PChar(ProcedureN ame));
if FuncPtr<>nil then
begin
@ThisProcedure:=FuncPtr;
ThisProcedure(aString);
FuncPtr:=nil;
end;
FreeLibrary(DLLHandle);
end;
Die Proceduren CallProcedure001 und CallPracedure002 unterscheiden sich ja kaum. Deshalb möchte ich, sie zu einer einzigen zusammenzufassen.
Dabei wäre es notwendig, den Typ der aufgerufenen DLL-Pocedure als Parameter zu übergeben.
Leider weis ich nicht, ob das geht und wie man das mach.
Danke für Eure Hilfe.
Comment