Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ComboBox mit unterschiedlichen Objekten - sauber abraeumen? (https://www.delphipraxis.net/87088-combobox-mit-unterschiedlichen-objekten-sauber-abraeumen.html)

marabu 23. Feb 2007 12:05

Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
 
Hi Ingo,

besser so:

Delphi-Quellcode:
procedure TDemoForm.FormCreate(Sender: TObject);
begin
  with ComboBox.Items do
    AddObject('demo', TObject(TStringList));
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  s: TStrings;
begin
  with ComboBox.Items do
    s := TClass(Objects[0]).Create as TStrings;
  s.Add('Ingo');
  s.Free;
end;
Bei deinem Create würde, wenn denn ein "echtes" Objekt gespeichert wäre, dieses mit Create() lediglich auf den Ausgangszustand zurück gesetzt. Du musst den richtigen TypeCast einsetzen.

Freundliche Grüße

IngoD7 23. Feb 2007 12:31

Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
 
Zitat:

Zitat von marabu
Bei deinem Create würde, wenn denn ein "echtes" Objekt gespeichert wäre, dieses mit Create() lediglich auf den Ausgangszustand zurück gesetzt. Du musst den richtigen TypeCast einsetzen.

Mein Create (und nicht nur in der Variation, wie ich es angegeben hatte) funktionierte gar nicht!
Ich hatte TClass(..) as .. völlig unterschlagen, wohl weil ich solche Konstrukte noch nie verwenden musste. So geht's jedenfalls. Danke.

Back to Topic:
Damit ist aber auch noch nicht geklärt, wieso (angeblich) das AddObject (im "Problemcode" hier im Thread) Speicher verbrät.

marabu 23. Feb 2007 13:31

Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
 
Hallo OldGrumpy,

Zitat:

Zitat von OldGrumpy
... Ich habe aber auf jeden Fall Memoryleaks die aus dem AddObject resultieren, und die sind zu gross als dass es einfach nur Pointer sein könnten. ...

ich kenne nur die eine Stelle aus deinem Code, zu der ich meinen Kommentar abgegeben habe, und dort sollte kein Speicher verloren gehen. Du kannst das leicht überprüfen, indem du eine Testanwendung aufmachst und in der nur mein Code-Beispiel verwendest. Wenn dort keine Speicherverluste auftreten, dann müssen wir den Fehler woanders suchen. Tritt er dort auch auf, dann finden wir sicher auch eine Erklärung. Teste mal, während ich meinen Stellungswechsel vollziehe.

Zitat:

Zitat von OldGrumpy
... Der Editor ist zum Beispiel keine "echte" grafische Komponente mit eigenen Controls, sondern der wird vom Mainform aus mit den Controls die auf dem Mainform liegen "verdrahtet". Macht sowas Sinn? ...

Das ist zu ungenau, als dass ich es kommentieren könnte.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 Uhr.
Seite 3 von 3     123   

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