erstmal zur Fehlermeldung(104);
> GetProcAddress wird keine
Exception auslösen, also ist diese Meldung, samt Try-Except "sinnlos"
und wenn du noch den Rückgabewert von GetProcAddress ausgewertet hättest, dann wär dir der falsche bzw. nicht vorhandene Name aufgefallen
Delphi-Quellcode:
function TV_Tische.DLLFunktionen_laden: boolean;
begin
Protokoll.Protokolleingang('
Verschiebetisch', '
DLL-Fkt laden');
result := DLL_Handle <> 0;
if result
then
begin
@MMC_COM_open := GetProcAddress(DLL_Handle, '
MMC_COM_open');
@MMC_COM_close := GetProcAddress(DLL_Handle, '
MMC_COM_close');
@MMC_sendCommand := GetProcAddress(DLL_Handle, '
MMC_sendCommand');
@MST_moving := GetProcAddress(DLL_Handle, '
MST_moving');
@MMC_setDevice := GetProcAddress(DLL_Handle, '
MMC_setDevice');
result := Assigned(MMC_COM_open)
and Assigned(MMC_COM_close)
and Assigned(MMC_sendCommand)
and Assigned(MST_moving)
and Assigned(MMC_setDevice);
end;
if not result
then Fehlermeldung(103);
Protokoll.Protokollausgang('
Verschiebetisch', '
DLL-Fkt laden');
end;
Da GetProcAddress selber erstmal egal ist, ob das
Handle gültig ist und im ungültigen Falle ebenfalls NIL zurückbibt, kann man alles z.B. so kürzen
Delphi-Quellcode:
function TV_Tische.DLLFunktionen_laden: boolean;
begin
Protokoll.Protokolleingang('
Verschiebetisch', '
DLL-Fkt laden');
@MMC_COM_open := GetProcAddress(DLL_Handle, '
MMC_COM_open');
@MMC_COM_close := GetProcAddress(DLL_Handle, '
MMC_COM_close');
@MMC_sendCommand := GetProcAddress(DLL_Handle, '
MMC_sendCommand');
@MST_moving := GetProcAddress(DLL_Handle, '
MST_moving');
@MMC_setDevice := GetProcAddress(DLL_Handle, '
MMC_setDevice');
result := Assigned(MMC_COM_open)
and Assigned(MMC_COM_close)
and Assigned(MMC_sendCommand)
and Assigned(MST_moving)
and Assigned(MMC_setDevice);
if not result
then Fehlermeldung(103);
Protokoll.Protokollausgang('
Verschiebetisch', '
DLL-Fkt laden');
end;