Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism Softwarekonzept (https://www.delphipraxis.net/70677-softwarekonzept.html)

XChris 2. Jun 2006 15:23


Softwarekonzept
 
Hallo,

ich möchte folgendes tun:
1 DLL erstellen mit einem Interface z.B. "IIrgendwas"
1 DLL mit einer Abstrakten Klasse, die von IIrgendwas ableitet z.B. "Irgendwas"
1 DLL die die Abstrakteklasse nutzt, um eine konkrete Klasse IrgendwasXY zu bilden
und eine EXE, welche NUR das Interface IIrgendwas kennt und so auf die Objekte zugreift. (zur Laufzeit erst bekannt)

Ich hab vorher C++ bzw. C# geproggt und möchte sowas einfach mal als Beispiel sehen. Cool wären einfach nur die Definitionen ...

Kann da jemand helfen und mir nen leichten Einsteig in Delphi.net geben?

Chris

DGL-luke 2. Jun 2006 15:44

Re: Softwarekonzept
 
EDIT: Ahhhhh verdammt... .NET...

Ich glaube nicht, dass du die Interface-Deklaration einfach so aus einenm Modul übernehmen kannst... ich würde das als Unit machen.

Delphi-Quellcode:
unit UIrgendwasInterface;

type IIrgendwas = interface;
  ['{GUID}']
  function IMethode(aParameter: TTyp): TErgebnisTyp;
end;
Delphi-Quellcode:
library MModul;

uses UIrgendwasInterface;

type TIrgendwas = class(IIrgendwas);
  function IMethode(aParameter: TTyp): TErgebnisTyp;
end;

var Modul: TIrgendwas;


function GetModule: Irgendwas; stdcall;
begin
  if not assigned(Modul) then
    Modul := Irgendwas.Create;
  Result := Modul;
end;

begin
Modul := nil;
end;
Delphi-Quellcode:
program UseModul;

uses UIrgendwasInterface;

function GetModule: Irgendwas; stdcall; external 'MModule.dll';

procedure UseModul;
var Modul: Irgendwas;
begin
  Modul := GetModule;
end;
So in etwa sollte das funktionieren...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz