Ich hatte einen harten Kampf gegen Delphi um das ganze zum laufen zu bringen, wenn aus der
DLL Exceptions geworfen werden. Den Kampf habe ich dann gewonnen, das Resultat ist im Anhang.
Leider muss nun jede Methode, welche in der
DLL implementiert wird beim Aufruf durch einen Try Except Block geschütz werden:
Delphi-Quellcode:
procedure TPlugin.SayHello(
const Language:
String);
var
ErrorMessage:
String;
begin
try
FPluginDLL.SayHello(Language);
// Aufruf der DLL-Methode
except
On E:
Exception do
begin
ErrorMessage := E.
Message;
UniqueString(ErrorMessage);
raise Exception.Create(ErrorMessage);
end;
end;
end;
Das ganze ist einwenig mühsam, besonders wenn in der
DLL viele Methoden implementiert sind. Leider wüsste ich keine Möglichkeit um das zu vereinfachen. Sowas wie
Delphi-Quellcode:
procedure TPlugin.SayHello(
const Language:
String);
var
ErrorMessage:
String;
begin
ProtectedCall(FPluginDLL.SayHello(Language));
// Aufruf der DLL-Methode
end;
wäre schön, ist aber so wie ich das sehe nicht realisierbar, da Delphi keine Makros kennt.
Schade...