![]() |
Free-Methode
Hallo,
ich hab in meinem Programm zuerst ein TPanel während der Laufzeit erstellt...
Delphi-Quellcode:
später hab ich es mit der free-methode gelöscht:
otab[1].box := tpanel.Create(otab[1].box);
Delphi-Quellcode:
wenn dann in dem gleichen programm wieder das Panel erstellen will kommt ein Fehler
otab[1].box.Free;
Delphi-Quellcode:
Fehler: "Im Project1.exe ist eine Exception der Klasse EAbstractError aufgetreten. Meldung Abstrakter Fehler"
otab[1].box := tpanel.Create(otab[1].box);
Weiss jemand woran das liegt? Schöne Grüße Adrian Klinger |
Re: Free-Methode
Versuche mal FreeAndNil(otab[1].box) statt otab[1].box.Free; ...
Aber wieso übergibst du em Panel im Konstruktor eigentlich die Variable, der es zugewiesen wird? Wenn da nichts sinnvolles drinsteht wird es natürlich krachen ;) |
Re: Free-Methode
Was müsste man denn da rein schreiben? Den Parent von dem TPanel?
|
Re: Free-Methode
Du kannst Form1 da rein schreiben. Du übergibst den Owener, der sich darum kümmert, dass das Objekt am Ende der Laufzeit freigegeben wird.
Wenn du kein Form hast, übergib einfach nil ;) |
Re: Free-Methode
ok dankeschön :-D
|
DP-Maintenance
Dieses Thema wurde von "Dax" von "Open-Source" nach "Object-Pascal / Delphi-Language" verschoben.
Open-Source ist das ja nicht? |
Re: Free-Methode
Das Problem ist eigendlich ein anderes.
otab[1].box ist beim start nil also ist bei erzeugen des Paneles der Owner auch nil (s.h. Create Parameter) Gibts du nun das Panel frei, ist der Zeiger in otab[1].box ungültig. Wenn du nun ein neues Panel erzeugst, ist der Owner ein freigegebenes Panel. Was natürlich nicht geht. Übergib beim Create immer NIL oder das Form. Bei NIL musst du dich selbst um das Freigeben kümmern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz