Announcement

Collapse
No announcement yet.

Wer gibt den Speicher wieder frei ?

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

  • Wer gibt den Speicher wieder frei ?

    Hi Leute,

    es wird ein Formular zur Laufzeit generiert und Nicht - Modal angezeigt. Das Formular verfügt über ein neuen Konstruktor welcher über ein neuen Übergabeparamter verfügt. Es handelt sich hierbei um eine Objekt.

    constructor CreateWithParams(Params : TcnDefaultFormParam; Owner : TComponent);

    Die Prozedur, die das Formular zur Laufzeit generiert, sieht folgendermaßen aus. (In der Prozedur wird auch das Übergabe - Objekt generiert)

    <pre>
    procedure TfmMain.dxBarButton5Click(Sender: TObject);
    var params : TcnDefaultFormParam;

    begin
    <b>params := TcnDefaultFormParam.Create(Self); </b>
    with params do
    begin
    end;

    testform := TutDefaultDataForm.CreateWithParams(<b>Params</b>,Application);
    testform.Show;
    end;
    </pre>

    Da das Formular Nicht - Modal angezeigt wird, würde ich gerne wissen, welche Instanz das Objekt <b>Param</b> wieder freigibt. Ich habe das Gefühl, als würde ich hier einen Fehler machen!

    Was meint Ihr

    Bis dann
    Happy Byte'ing

  • #2
    Hallo BlueBit!
    Deine Vermutung ist richtig. Objektinstanzen, die man selbst erzeugt, muss man auch selbst wieder freigeben. Nur Komponenteninstanzen, die einem Komponentencontainer (z.B. einem Frame) zugeordnet sind (Eigenschaft parent) werden automatisch freigegeben, sobald der übergeordnete Container freigegeben wird.

    Das params-Objekt muss also nach gebrauch mittels <b>free</b> wieder freigegeben werden. Dies sollte spätestens beim Aufruf des finalize-Abschnitts einer Unit geschehen.
    z.B.:

    ...
    finalization
    if params <> nil then params.free

    Comment

    Working...
    X