Thema: Delphi Klassen in DLL

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 

Re: Klassen in DLL

  Alt 21. Sep 2008, 12:55
Zitat:
Eine mögliche Vorgehensweise (noch ohne COM):
Frage mich warum das in Delphi so kompliziert ist ein Klasse für den zugriff von außen zu instanzieren.
In VB erstelle ich ein öffentliche Klasse ganz einfach.. ohne mich mit Interface-Deklaration rumzuschlagen.
Dll 'GenInterface' erstellen dort alle funktionen die ich in anderen Projekten verwenden will öffentlich machen.

Beispiel:
Delphi-Quellcode:
Public Property Get EQVisible() As Boolean
//
End Property

Public Property Let EQVisible(ByVal sEQVisible As Boolean)
//
End Property

Public Sub Execute(ByVal lngHwnd As Long)
//
End Sub

Public Function GetPlaylistBColor(ByVal mColor As OLE_COLOR) As OLE_COLOR
//
End Function

Public Function GetPlaylistFColor(ByVal mColor As OLE_COLOR) As OLE_COLOR
//
End Function
Das wars dann schon..
Nachher muss ich diese DLL als Interfacebrücke nur noch in meine Anwendung als Verweis einbinden.
Die Plugins welche dann mit meiner Anwendung kommunizieren sollen
müssen dann nur eine MasterClass besitzen bsp .. clsMain
Dort implementiere ich das Interface natürlich auch in der Anwendung.
Implements GenInterface.IPluginGen Dort werden dann alle Funktionen (vererbungen des GenInterface) erneute deklariert.
Und dann kann man zwischen 'Anwendung <GenInterface > Plugin' kommunizieren
Delphi-Quellcode:
Private Property Get IPluginGen_EQVisible() As Boolean
    IPluginGen_EQVisible = EQVis
End Property

Private Property Let IPluginGen_EQVisible(ByVal sEQVisible As Boolean)
    EQVis = sEQVisible
End Property

Private Sub IPluginGen_Execute(ByVal lngHwnd As Long)
    Load frmBrowser
End Sub

Private Function IPluginGen_GetPlaylistBColor(ByVal mColor As stdole.OLE_COLOR) As stdole.OLE_COLOR
    mBackColor = mColor
    getColor = True
End Function

Private Function IPluginGen_GetPlaylistFColor(ByVal mColor As stdole.OLE_COLOR) As stdole.OLE_COLOR
    mForeColor = mColor
End Function
Also warum ist das in Delphi so kompliziert?

EDIT:
Jede Anwendung die nun über die clsMain verfügt und das GenInterface als
Verweis einbindet kann nun mit meiner Anendung kommunizieren ohne
das sie die Interface-Bezeichnung (['{C55C5E2B-CC7D-4B8F-97BC-AB2A66EAAA33}']) kennen muss

gruss Emil
  Mit Zitat antworten Zitat