Announcement

Collapse
No announcement yet.

habe frage zu objecterzeugung

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

  • habe frage zu objecterzeugung

    hallo,<br>
    <br>
    kann mir jemand erklären was genau der unterschied<br>
    zwischen:<br>
    MyObject := TMyObject.Create(Self);<br>
    und<br>
    TMyObject.Create(Self);<br>
    ist? Also bei der ersten Möglichkeit habe ich eine variable,<br>
    über die ich die methoden etc ansprechen kann. Will ich dann<br>
    die instanz freigeben schreibe ich:<br>
    MyObjcet.Free;<br>
    wie mache ich das freigeben bei der zweiten variante?<br>
    TMyObject.Free geht nicht, hier würde dann sowas wie:<br>
    with TMyObject.Create(Self) do<br>
    Free;<br>
    aber:<br>
    TMyObject.Free; geht nicht.<br>
    wie verhält sich dies?<br>
    <br>
    für antowrten danke ich im vorraus.<br>
    mfg<br>
    andik

  • #2
    TMyObject.Create ist eine Funktion, die ein neues Objekt erstellt und einen Zeiger auf diesen zurückgibt. Diese <b>musst</b> du in einer Variable speichern, sonst kannst du nicht auf sie zugreifen. MyObject.Free gibt dann den Speicher dieser Variable frei. TMyObject.Free würde die eigentliche Klasse freigeben, das geht aber nun mal nicht, denn es ist kein Objekt, welches Speicher belegt

    Comment


    • #3
      Hi

      Es sein denn das Object soll nicht freigegeben werden oder gibt sich selber frei, wie z.B. TThread und .FreeOnTerminate := true;

      Gruß Hage

      Comment


      • #4
        Wie gesagt brauchst du eine Variable um das Objekt wiederfinden zu koennen.<br>
        Es geht auch ohne Variable bzw. mit anonymer Variable.<br>
        with TMyObject.Create do<br>
        begin<br>
        // alles moegliche tun<br>
        Free;<br>
        end;<br&gt

        Comment

        Working...
        X