Einzelnen Beitrag anzeigen

Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Problem mit TInterfaceList

  Alt 14. Feb 2005, 18:33
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.
  Mit Zitat antworten Zitat