Zeiger auf Fenster Form2 = new TForm2(this) selber mit delete Löschen ?



  • hi,

    ich befinde mich in unit1 und möchte Form2 aufrufen.
    also lege ich es mit Form2 = new TForm2(this) an.
    muss ich denn nun diesen zeiger selber wieder freigeben oder wird er wenn die software beendet wird selbstständig entfernt ?

    warum muss ich eigentlich in dem fall nicht

    TForm* Form2 = new TForm2(this) sagen ????
    

    danke



  • An dieser Stelle gebe ich Dir eine gute Buchempfehlung:

    "C++, Objektorientiertes Programmieren von Anfang an"
    von Helmut Erlenkötter

    Danach dürften solche Fragen (auch zum Thema Zeiger ;-=))
    überflüßig sein.

    epidemic



  • oh man ich muss aber morgen das teil abgeben und wollte nur sichergehen das das was ich vorhabe mehr oder weniger legitim ist ...

    meine anwendung läd auf ein panel jeweils verschiedene forms.
    da es sich hier um ca. 20 formulare mit bildern handelt möchte ich diese wenn möglich erst zur laufzeit erzeugen. so hab ich mir das ungefähr vorgestellt:

    TForm* zgrForm;

    void Formwechsel(TForm* frmName)
    {
    // wenn Zeiger bereits auf ein Formular zeigt visible auf false setzen
    if(zgrForm != NULL)
    {
    zgrForm->Visible = false;
    }
    else
    {
    // alten Zeiger löschen wenn nötig
    delete zgrForm; // ?

    // zgrForm auf neues Formular zeigen lassen
    zgrForm = new frmName(this); // hier bin ich mir ja noch unsicher ...
    zgrForm->Parent = pnlMain;
    zgrForm->Visible = true;
    }
    }



  • sorry hier im code tag

    TForm* zgrForm;
    
    void Formwechsel(TForm* frmName)
    {
      // wenn Zeiger bereits auf ein Formular zeigt visible auf false setzen
      if(zgrForm != NULL)
      {
        zgrForm->Visible = false;
      }
      else
      {
        // alten Zeiger löschen wenn nötig
        delete zgrForm; // ?
    
        // zgrForm auf neues Formular zeigen lassen
        zgrForm = new frmName(this); // hier bin ich mir ja noch unsicher ...
        zgrForm->Parent = pnlMain;
        zgrForm->Visible = true;
      }
    }
    

Anmelden zum Antworten