| Autor |
Nachricht |
Mario Rosenbohm
Mitglied
Benutzerprofil
Anmeldungsdatum: 02.10.2002
Beiträge: 132
|
Mario Rosenbohm Mitglied
19:35:00 22.12.2002 Titel: |
DLL und DataModule |
Zitieren |
Hallo,
folgendes Problem:
Ich habe ein Formular und ein DataModul. Wenn sich beide im *.Exe Project befinden, funktioniert alles bestens.
Stelle ich nun das Formular und das DataModul in das *.dll Project, bekomme
ich beim Formular Fehlermeldungen, wenn es auf das DataModul zu greift.
etwa so:| Code: | // Code aus Artikel.cpp
if (!DataMod_PD->TA_PD_Uebers->Active)
DataMod_PD->TA_PD_Uebers->Active = true; | |
In der DLL rufe ich das Form so auf:| Code: | 1 2 3 4 5 6 7 8 9 10 11 | try
{
TDataMod_PD *DataMod_PD = new TDataMod_PD(Application);
TArtikelverwaltung *Artikelverwaltung = new TArtikelverwaltung(Application);
Artikelverwaltung->ShowModal();
}
__finally
{
delete Artikelverwaltung;
delete DataMod_PD;
} | |
DataMod_PD ist zur Fehlerzeit NULL.
Wie kann oder muss ich dem Artikel.cpp mitteilen, welchen Wert DataMod_PD hat.
In der Application exestieren ja automatisch die Pointer der Formulare/Module.
Danke Mario :confused:
[ Dieser Beitrag wurde am 22.12.2002 um 18:37 Uhr von Mario Rosenbohm editiert. ] |
|
|
|
 |
F98
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.06.2002
Beiträge: 3668
|
F98 Mitglied
21:40:00 22.12.2002 Titel: |
|
Zitieren |
Probier mal das:
| C++: | | TDataMod_PD *DataMod_PD = new TDataMod_PD(NULL); | |
oder schau auf meiner Seite unter "BC++ Builder -> DLLs" |
|
|
|
 |
Mario Rosenbohm
Mitglied
Benutzerprofil
Anmeldungsdatum: 02.10.2002
Beiträge: 132
|
Mario Rosenbohm Mitglied
23:37:00 22.12.2002 Titel: |
|
Zitieren |
Sorry,
da habe ich mich wohl ein wenig "dumm" ausgedrückt.
In der DLL sind 2 Formulare,
1. TArtikelverwaltung und
2. TDataModule_PD
Beide Formulare greifen auf das je andere zu.
bis jetzt habe ich es geschaft, das ich in die Klasse TArtikelverwaltung
eine public variable "TDataModule_PD *DataModule_PD;" eingefügt habe, und diese
nach dem erstellen der beiden Forms mit "... = new T...(NULL)" mit
"Artikelverwaltung->DataModule_PD = DataMod_PD;" zuweise.
Dazu muss ich in der "Artikel.h" die "DataModul_pd.h" includieren.
das geht einwandfrei.
Versuche ich es aber auch bei der "DataModul_PD.h" eine public variable
vom Type "TArtikelverwaltung *Artverw;" einzufügen, mekert er trotz des includierens der "Artikel.h" das er einen Typenamen erwartet ???
Wiso ? Mario |
|
|
|
 |
Mario Rosenbohm
Mitglied
Benutzerprofil
Anmeldungsdatum: 02.10.2002
Beiträge: 132
|
Mario Rosenbohm Mitglied
18:44:00 25.12.2002 Titel: |
|
Zitieren |
Ho ho ho,
Frohes Fest noch.
Ich habe schon einiges probiert, ja ich war auch in den FQA's.
Doch das dort beschriebene Beispiel funktioniert nur wenn beide
Form's in dem *.exe-Projekt stehen.
Wenn sich beide im *.dll-Projekt befinden kennen sie sich trotz
gegenseitigem Include nicht, WARUM ?
Schöne Feiertage,
Gruß Mario |
|
|
|
 |
Mario Rosenbohm
Mitglied
Benutzerprofil
Anmeldungsdatum: 02.10.2002
Beiträge: 132
|
Mario Rosenbohm Mitglied
22:52:00 27.12.2002 Titel: |
|
Zitieren |
Hi,
Problem gelöst.
Also: 2 Forms in der DLL
Form1 = Artikel.cpp| Code: | .....
#pragma resource "*.dfm"
TArtikelverwaltung *Artikelverwaltung;
//---------------------------------------------------------------------------
..... | |
Form2 = DataMod_PD.cpp| Code: | .....
#pragma resource "*.dfm"
TDataMod_PD *DataMod_PD;
//---------------------------------------------------------------------------
..... | |
Dann in die ArtVerw.cpp(wird ArtVerw.dll)[code]extern "C" __declspec(dllexport) void ShowArtikelverwaltung();
extern TDataMod_PD *DataMod_PD;
extern TArtikelverwaltung *Artikelverwaltung;
//---------------------------------------------------------------------------
void ShowArtikelverwaltung()
{
DataMod_PD = new TDataMod_PD(NULL);
Artikelverwaltung = new TArtikelverwaltung(NULL);
Artikelverwaltung->ShowModal();
delete Artikelverwaltung;
delete DataMod_PD;
}[/code]
... und schon kennt Form1 Form2 und umgekehrt.
Na dann...
Mario
[edit] scheiß Tippfehler [/edit]
[ Dieser Beitrag wurde am 27.12.2002 um 21:54 Uhr von Mario Rosenbohm editiert. ] |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|