Announcement

Collapse
No announcement yet.

Stacküberlauf bei Anlegen eines Formulares.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Stacküberlauf bei Anlegen eines Formulares.

    Hi,
    beim Umstieg von der C++Builder Version 3 auf 5 habe ich ein nicht zu erklärenden Stacküberlauf beim Anlegen eines Formulares.
    Der Sonderfall hierbei ist, daß ich den Konstruktor des Formulares überschrieben habe und ihm einen zusätzlichen Parameter
    mitgebe:

    __fastcall TEditDB::TEditDB(TComponent* Owner,int Art)<BR>
    : TForm(Owner)<BR>
    {<BR>
    SetDB(Art);<BR>
    }<BR>

    Wenn ich nun dieses Formuar durch:

    TEditDB *EditDB = new TEditDB(this,1);<BR>
    EditDB->ShowModal();<BR>
    delete EditDB;<BR>

    erzeuge, wird der Konstruktor quasi rekursiv immer wieder neu angelegt und es gibt einen Stacküberlauf.

    Hat dafür jemand eine Erklärung ?

    Bye - Peter

  • #2
    Hallo Peter,

    in forms.hpp ist bereits ein Prototypen TForm(TComponent *Owner, int Dummy) deklariert. Genau der verursacht dein Problem. Wenn du jetzt deinen Prototypen umschreibst, in z.B. __fastcall TEditDB(TComponent* Owner,int Art, int NochEinDummy) dann sollte es funktionieren.
    Du kannst aber auch eine Struktur definieren, die nur deinen Integer enthält und deinen Konstruktor so deklarieren __fastcall TEditDB(TComponent* Owner, TMyType &Art)

    Viel Spass

    Heik

    Comment


    • #3
      Schönen Dank, hat super geklappt

      Bye - Pete

      Comment

      Working...
      X