Frame, Mehrfachvererbung: Pointer zu Componenten NULL
-
Alexander Kempf schrieb:
Wie soll das funktionieren?
Du verwendest nicht die Variable Deines Frames auf dem Formular,
sondern die im Frame deklarierte globale Variable (die meiner Meinung
nach standardmäßig nicht erstellt werden sollten).Header-Datei Deines Formulars:
class TForm1 : public TForm { __published: TFrame2 *Frame21; // <---------- Hier die Variable, die Du verwenden solltest TButton *Button1; void __fastcall Button1Click(TObject *Sender); public: __fastcall TForm1(TComponent* Owner); };CPP Deines Formulars:
void __fastcall TForm1::Button1Click(TObject *Sender) { Frame2->Button1->Caption="test"; // <------- Falsch verwendet }Gruß
Alexander
mit 2 forms geht das aber... warum nicht mit frame & form ??
-
maehze schrieb:
mit 2 forms geht das aber... warum nicht mit frame & form ??
Darüber solltest Du Dir mal in einer ruhigen Minute Gedanken machen.
Kleine Denkanstöße:
- Was bezweckt man eigentlich mit Frames?
- Hast Du schon mal versucht 4 identische Forms auf einer Form im Designer abzulegen?Gruß
Alexander
-
barristan schrieb:
Er kann die Klasse TfrmTwo nicht finden.
Entferne ich nun ",public IBlub" von TfrmTwo, läuft das Programm einwandfrei.Kann ich mit BCB2006pro nachvollziehen. In der Tat wird ordnungsgemäß kompiliert, aber zur Laufzeit
wird die Klasse des vom ersten Frame erbenden Frames nicht gefunden.
Wäre noch interessant herauszufinden, ob beim BCB2007 das Problem auch noch besteht.Glücklicherweise habe ich Frames noch nie in dieser Form verwenden müssen.
Gruß
Alexander
-
Das Problem besteht auch beim BCB2007. Ich denke man könnt den Fall mal bei QualityCentral reinstellen.
-
Braunstein schrieb:
Das Problem besteht auch beim BCB2007. Ich denke man könnt den Fall mal bei QualityCentral reinstellen.
Ja ja, man muss nur feste dran glauben, dass es hilft.
Mein Bug-Report ist mittlerweile 6 Jahre alt. Passiert ist da allerdings überhaupt nichts...
-
Es geht mir ja nicht unbedingt darum, dass ich eine globale Variable des Frames durch desen Form ändere.
Wenn ich versuche durch die Form eine Funktion des Frames aufrufen möchte, kommt ja das gleiche und es wäre doch sicherlich nicht falsch, wenn man durch den Frame auch auf ein paar Komponenten des Frames zufreifen kann ?!? (zB Frame2->Height)mfg, maehZe
-
Joe_M. schrieb:
Passiert ist da allerdings überhaupt nichts...
Im vorliegenden Fall könnte ich mir vorstellen, dass CodeGear auch nicht
viel unternehmen wird. Wie wahrscheinlich ist es, dass Horden von Programmierern
zwei Frames voneinander ableiten und jeweils mit einem "interface" verzieren.
Da wird CodeGear eher das Risiko eingehen, dass sich im Jahr ein oder zwei
Programmierer deswegen beschweren - wie vermutlich jede Firma, die begrenzte
Ressourcen hat. Wir setzen bei unseren eigenen Produkten auch Prioritäten.Allerdings sind bei Borland/CodeGear in der Vergangenheit auch schon wichtiger
Fehler nicht behoben worden.Gruß
Alexander
-
maehze schrieb:
Es geht mir ja nicht unbedingt darum, (...)
Habe ich insgesamt überhaupt nicht verstanden. Kannst Du das für mich mal
in einfacheres Deutsch übersetzen?Gruß
Alexander
-
Also hat sich mein Anfangsverdacht doch bestätigt. Ich werde den Fehler auf jeden Fall melden, allerdings bleibt mir aus Zeitgründen sowieso nichts anderes übrig als die Frames anders zu programmieren.
-
barristan schrieb:
Also hat sich mein Anfangsverdacht doch bestätigt.
Nach meinem Verständnis ging Dein Anfangsverdacht in eine ganz andere Richtung (Null-Pointer bei
einstufiger Mehrfachvererbung).
Würde mich mal interessieren, was daraus eigentlich geworden ist. Das hat nämlich - soweit ich
das überschauen kann - hier noch keiner offiziell bestätigen können.barristan schrieb:
Ich werde den Fehler auf jeden Fall melden
Solltest Du tun, obwohl ich befürchte, dass Joe_M. mit seiner schwarzseherischen Prognose
recht behalten wird.Ich vermute, dass die ursprüngliche Intension von Frames nicht in die Richtung ging,
wie Du sie jetzt verwendest. Wofür brauchst Du eigentlich diese Vererbungshierarchie,
also Frame2 von Frame1 von TFrame und dann auch beide eigenen mit Mehrfachvererbung?
Offenbar ist das ja kein künstlich konstruiertes Gerüst, das nur darauf abzielt,
Fehler im BCB aufzuzeigen, sondern Du brauchst es wirklich.
Kannst Du das nochmal in kurzen Worten erklären?Gruß
Alexander