Muss ich da noch einen Konstruktor oder ähnliches aufrufen?
Warum klappt das in einer WinForms Anwendung?
Natürlich?
Willst du auf ein Objekt der Klasse zugreifen, dann mußt du erstmal ein instanziertes Objekt dieser Klasse erstellen, was man irdentwo mit Create macht.
Grundsätzlich ist die Vorgehensweise in
DLL und EXE (
VCL,
NonVCL oder Konsole) die Selbe.
PS: Wenn du eine Form oder DataModul erstellst, dann kann man die
VCL in einem
VCL-Projekt (neuerdings auch FMX statt
VCL) dazu bringen diese Instanzen "automatisch" erstellen zu lassen, welches standardmäßig "aktiviert" wird, wenn man diese Units automatisch generieren läßt.
siehe Projekt-Optionen > Formulare
bzw. siehe Projekt-Datei (
DPR), denn da werden letztendlich diese Instanten erstellt. Siehe
Application.CreateForm(...)
, worin das Create aufgerufen wird.
Du mußt also letzendlich deine Instanz des DataModuls irgendwo "selbst" erstellen.
> über eine Initialize-Prozedur, welche deine EXE anfangs erstmal aufrufen muß, bevor sie due Funktionen der
DLL nutzen darf
> im Initialization-Abschnitt einer
Unit (in Finalization natürlich wieder freigeben)
> in einem Class-Constructor der Klasse (ist das "Gleiche" wie Initialization/Finalization)
> im Begin-End-Bereich des
DLL-Projekts (
DPR), aber dort fehlt dann die Freigabe-Stelle der Instanz
PS: Das automatische Generieren aller Forms/DataModule ist auch nicht immer das Wahre.
Stell dir mal vor Delphi oder MS Word würde alle Fenster immer gleich bei Programmstart erstellen, dann bräuchten diese ewig zum Starten und würden immer extrem Arbeitsspeicher belegen, was vorallem dann sinnlos ist, wenn etwas selten verwendet wird ... Darum erstellt man da viele Vormulare "manuell" erst dann, wenn sie benötigt werden und gibt sie danach gleich wieder frei.