Hallo zusammen,
Ich hoffe ich habe die richtige Sparte erwischt.
Ich möchte Mittels eines Interfaces Datenstrukturen zwischen meiner Anwendung und einer
Dll tauschen.
folgendes Interface:
Delphi-Quellcode:
type IMyException = interface
['{682DE719-6008-404D-8921-D648F35FC1D7}']
function Msg: String; stdcall;
function ErrorClassName: String; stdcall;
function GetProcName: String;
procedure SetProcName(Value: String);
property ProcName: String read GetProcName write SetProcName;
end;
Die Anwendung soll nun darauf zugreifen können:
Delphi-Quellcode:
function GetLastError: IMyException; stdcall; external 'TestPlugin';
//...
ShowMessage(GetLastError.Msg);
Und in der
DLL
Delphi-Quellcode:
var fLastError: IMyException;
//...
function GetLastError: IMyException;
stdcall;
begin
Result := fLastError;
end;
//...
except
on E:
Exception do
begin
Result := False;
fLastError := TMyException.Create(E);
end;
end;
Geht das jetzt ohne Sharemem? Die Interfacestrukturen enthalten ja Funktionen die Strings zurückgeben...
Oder ist das ganze durch die Interfaces so gekapselt, das die Memorymanager von
DLL und Anwendung nicht ins Gehege kommen?
Bei Tests hat es jedenfalls funktioniert, aber es kann ja sein das ich mit dem Feuer spiele
Grüße phreax
Und dann war da noch der junge Mann ....
... der unbedingt Schriftsteller werden wollte.
Er wollte Emotionen wecken und die Leute zum weinen bringen.
Sein Traum wurde wahr, er verfasst heute die Fehlermeldungen bei Microsoft!