Hi,
hier mal die anderen Units:
udcplugin:
Delphi-Quellcode:
unit udcplugin;
interface
const
PLUGIN_VERSION = '
0.0';
type
IEditor =
interface;
IApp =
interface;
IPlugIn =
interface;
IPlugIn =
interface
['
{8E5F6F87-BD7C-4F51-A2B1-36E437E20648}']
{ GetName liefert den Namen des PlugIns, der im Menü verwendet wird }
function GetName: WideString;
stdcall;
{ GetVersion lieft die Versionsnummer }
function GetVersion: Integer;
stdcall;
{ GetPlugInVersion liefert die Version der PlugIn-Schnittstelle }
function GetPlugInVersion: WideString;
stdcall;
{ Execute wird von der Anwendung aufgerufen, wenn der Benutzer auf
den Menüpunkt klickt. }
function Execute(App: IApp): Integer;
stdcall;
end;
IApp =
interface
['
{8E5F6F87-BD7C-4F51-A2B1-36E437E20648}']
{ GetEditor liefert ein Interface auf den Editor }
function GetEditor: IEditor;
stdcall;
{ Terminate beendet das Programm }
procedure Terminate;
stdcall;
end;
IEditor =
interface
['
{8E5F6F87-BD7C-4F51-A2B1-36E437E20648}']
function CaretX: Integer;
stdcall;
function CaretY: Integer;
stdcall;
procedure Clear;
stdcall;
procedure SetContent(
const Value: WideString);
stdcall;
function GetContent: WideString;
stdcall;
property Content: WideString
read GetContent
write SetContent;
end;
implementation
end.
Test.dll (ein kleines PlugIn):
Delphi-Quellcode:
library test;
{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der
ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
Informationen als PChar- oder ShortString-Parameter übergeben. }
uses
udcplugin;
{$R *.res}
type
TPlugIn =
class(TInterfacedObject, IPlugIn)
function GetName: WideString;
stdcall;
function GetVersion: Integer;
stdcall;
function GetPlugInVersion: WideString;
stdcall;
function Execute(App: IApp): Integer;
stdcall;
end;
function TPlugIn.GetName: WideString;
begin
Result := '
Mein &TestPlugIn';
end;
function TPlugIn.GetVersion: Integer;
begin
Result := (1
shl 16)
or 0;
end;
function TPlugIn.Execute(App: IApp): Integer;
var
Temp: WideString;
begin
Result := 1;
Temp := App.GetEditor.Content;
App.GetEditor.Content := Temp;
end;
function InitPlugIn: IPlugIn;
stdcall;
begin
Result := TPlugIn.Create;
end;
function TPlugIn.GetPlugInVersion: WideString;
begin
Result := PLUGIN_VERSION;
end;
exports
InitPlugIn;
begin
end.