Autor Beitrag
Carla
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111
Erhaltene Danke: 2



BeitragVerfasst: Fr 16.01.09 13:00 
Hallo,

wir sind noch beim Experimentieren mit der Programm-Modularisierung in Delphi.
BPL wollen wir aufgrund der Versionsabhängigkeit nicht verwenden.
Eine Dll hat den Vorteil Delphi- unabhängig stärker zu modularisieren. Ein wesentlicher Grund
ist allerdings, das wird die Dll auch erst mal unter Net weiternutzen wollen.
Eine Dll enthält eine komplette Form (z.B. Auftragseingang).
Die Dll hat ein eigenes Applicationshandle.
Dadurch kolodieren verwendete Komponenten nicht untereinander durch Registerclass.
Die einzige Schnittstelle zum Programm ist eine Parameterübergabe und ein evendueller Callback.
Die Dll erhält das Handle der Parentform und wird auf dieser per SetWindowsParent fixiert.
Dieses Verfahren haben wir bisher bereits praktiziert nit Modulen, welche als Exe bereitgestellt werden.
Hier gestaltet sich jedoch die IPC etwas schwierig.
Insbesondere die Rücklieferung von Ergebnissen.

Was mich jetzt interessiert, funktioniert das Übergeben von (nicht visuellen) Objekten als Pointer?

Wir verwenden z.B. IBDAC als Zugriffsschicht.
Jedes externe Modul benötigt eine Query oder zumindest die Connection.

Also so ein Construct:

ausblenden Delphi-Quelltext
1:
InitDll(Connection)					


in der Dll

ausblenden Delphi-Quelltext
1:
2:
Query := TIBCQuery.Create(nil);
Query.Connection := ParamConnection;


Für einen Tip dankbar.

Gruß
Carla

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Sa 17.01.2009 um 12:19
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Fr 16.01.09 14:41 
user profile iconCarla hat folgendes geschrieben Zum zitierten Posting springen:
Was mich jetzt interessiert, funktioniert das Übergeben von (nicht visuellen) Objekten als Pointer
IMHO läuft das so: Solange die DLL das Objekt im Speicher hält und den Speicher *be*hält, kann man auch per Pointer auf das Objekt zugreifen.

Ich muss aber gestehen, dass ich nicht viel von dem, was du gesagt hast, verstanden hab. Dein sehr spezieller Fall könnte sich natürlich anders verhalten. :nixweiss:

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.