Hi marabu,
danke für die Erklärung!
Zitat von
marabu:
Hallo Ingo,
Zitat von
IngoD7:
... Naja, TComboBox.Items.Objects[] enthält immer nur Referenzen. Die Frage ist, ob diese Referenz auf ein real existierendes Objekt zeigt, das man auch freigeben könnte. Das scheint hier eben nicht der Fall zu sein. ...
Klassenreferenz ist in Object Pascal ein terminus technicus, die Online Hilfe enthält dazu sicher ein Kapitel. Klassen werden nicht freigegeben, Free ist auch keine class method.
So weit, so (auch schon vorher) klar. Letztlich wollte ich genau das auch nur bestätigen/ergänzen. (Auch wenn ich lange nicht alles zum Thema Klassenreferenzen und Klassenmethoden verstanden habe, was ich jemals drüber gelesen habe.
)
Viel spannender ist da folgendes:
Zitat von
marabu:
Zitat von
IngoD7:
... Ich weiß auch gar nicht, welche Zahl das ist, wenn man eine Klasse auf Integer castet. Was kann man mit der Zahl anfangen? Was hat man davon, diese Zahl (also den Integer) dann auf TObject zu casten und den Zeiger dann in eine Objektliste zu hängen? ...
Im vorliegenden Fall ist TObject(Integer(TMyEffect)) identisch mit TMyEffect - zuletzt ist alles ein Zeiger in unterschiedlichen Interpretationen. Durch die in Objects[] hinterlegte Klasse kann bei Auswahl eines Items der ComboBox die entsprechende Klasse instanziert werden.
Sowas in der Art?
Delphi-Quellcode:
var
ObjVar: TObject;
begin
ObjVar := MyComboBox.Items.Objects[MyComboBox.ItemIndex].Create;
end;
Das klappt doch nicht, oder?