Probleme beim einbinden von Unit
-
Ich habe eine Unit mit Klassen erstellt.
Diese Unit wird selbstverständlich in der Form1 eingebunden, damit ich auch die Klassen nutzen kann. So weit funktioniert es auch.Nun habe ich allerdings noch ein Form2 erstellt. In diesem Form2 benötige ich auch meine Klassen aus der Unit.
Beim Kompilieren sagt er mir nun (sinngemäß), dass er die Klasse nicht kennt, die ich in Form2 aufrufe. Das ist eigentlich schon seltsam, weil ich in Form1 zuerst die Unit (mit den Klassen) einbinden und erst danach Form2, so dass Form2 eigentlich die Klassen kennen müsste.
Trotzdem habe ich dann noch die Unit (mit den Klassen) in Form2 eingebunden. Darauf sagt mir der Compiler, dass die Klasse bereits existiert!!
Kurzum, ich kann es drehen und wenden wie ich will, es gibt immer was zu meckern.
-
wenn ich deinen Text richtig gelesen habe, bindest du Form2 in Form1 ein und erhoffst dir dadurch, dass er die Klassen erkennt??????? hääää
Versuch mal in Form1 die Klassen-Unit einzubinden sowie Unit2
und in Form2 einfach Form1 einbinden.mfg
Tom
-
Meines wissens ist #include so zuverstehen, dass die betreffende Datei an diese Stelle kopiert wird. Also so, dass nach dem Präprozzesor-Durchlauf nur eine große Datei vorhanden ist. Demnach müsste müsste auch Form2 alles kennen was zuvor vereinbart wurde.
Nunja, dass es beim BCB nicht der Fall ist weiß ich nun auch.Dein Vorschlag funktioniert auch nicht (hatte ich vorher schonmal getestet).
-
komisch, und wenn du beide Forms gegenseitig in den anderen einbindest + zusätzlich noch die Klassen-Unit?
geht das auch nicht?
mfg
Tom
-
Hallo
wenn du die Klassenunit im Header von Form1 einbindest, muß beim Einbinden von Form1 in Form2 auch Form2 diese Klassen kennen.
bis bald
akari
-
das hat er doch eh gemacht, zumindest hab ich seinen Text so verstanden bzw. so interpretiert.
-
Hallo
ich vermute das er die Klassenunit in der Implemenationsdatei von Form1 included hat, und deshalb über den Header von Form1 nicht an die Klasse rankommt.
bis bald
akari
-
das könnte natürlich auch sein, hab ich gar nicht dran gedacht.
mfg
Tom
-
Ich versuch die Struktur hier mal wiederzugeben:
Unit1.cpp:
#include "Unit1.h" #include "TForm2.h"Unit1.h:
#include <Klassen.cpp>TForm2:
private: // Anwender-Deklarationen CKlasse* Bezeichner;So geht es nicht, der Compiler meckert in dieser Zeile: "CKlasse* Bezeichner;"
Wenn ich nun in Form2 mit Alt+F11 Unit1.h einbinde geht es auch nicht.
Wenn ich in TForm2.h auch "#include <Klassen.cpp>" schreibe, dann sagt er es wäre doppelt definiert!
-
reicht es nicht wenn ich in den headers einfach die unit bekannt mache? also dieses Problem hatte ich auch schonmal gehabt

-
Ich krieg das immer noch nicht hin. Und weiß auch nich, was ich da weiter machen soll!
-
Hallo
es gibt noch keine Verbindung von Form2 zu der Klassenunit
TForm2:#include <Klassen.cpp> // oder #include "Unit1.h" ... private: // Anwender-Deklarationen CKlasse* Bezeichner;Mit der Autofunktion wird der Include nur in die Form2.cpp gesetzt, dort ist es aber zu spät, es muß in Form2.h
bis bald
akari
-
Also ich bin ein leihe aber dieses problem hab ich so mit meinem prof gelöst. du bildest ne unit und in der header der unit definierst du deine klasse. die header bindest du jeweils in den anderen headers der formulare ein. so jetzt sollte das klappen

-
Also darf man sich in diesem Fall nicht auf das automatische Einbinden verlassen (ein Bug?)?
Wenn ich in Form2 mit alt+f11 die Unit1 einbinde, dann muss ich den geschaffenen Eintrag aus der cpp ausschneiden und in die h einfügen!?!Danke Schön, ich werd es gleich testen.
-
Jetzt Gates!
Habe früher immer alles von Hand eingebunden, bis ich hier im Forum gelesen habe, dass man das nicht machen sollte!!
Naja, is eben doch nicht so einfach...
-
Hallo
nein, kein Bug. Nur nicht das richtige was du brauchst.
Deshalb ist es wichtig, wie und warum man manuell sowas macht.bis bald
akari