Wenn ich in einer Klasse ein Objekt (also die Instanz einer anderen Klasse) als Read-Only-Property definiere, kann der Benutzer dieses Property-Objekt freigeben, was mir nicht recht ist.
Es ändert auch nichts daran, wenn die Klassendefinition des Property-Objects in einer anderen Unit steht.
Irgendwie ist das auch logisch, denn mit dem Object-Property übergibt man ja einen Zeiger auf die Instanz.
Mir fällt dazu eigentlich nur ein, die jeweiligen Methoden/Felder der Sub-Objekte als "Public" zu deklariern und im Hauptobjekt aufzurufen, was ich aber gern vermeiden würde.
Vielen Dank im Voraus für jede Antwort
Traude
Object Properties
Re: Object Properties
Ist doch nicht dein Problem. Das kann der Benutzer auch machen:Traude hat geschrieben:Wenn ich in einer Klasse ein Objekt (also die Instanz einer anderen Klasse) als Read-Only-Property definiere, kann der Benutzer dieses Property-Objekt freigeben, was mir nicht recht ist.
Memo1.Lines.Free;
Kackt ab, na und?
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Object Properties
Das kannst du nicht verhindern, da schon TObject.Destroy öffentlich sichtbar (public) ist. Es ist aber durchaus gängige Praxis, die Klassendefinition so zu gestalten, dass diese Objekte nicht freigegeben werden dürfen (oder der Verursacher hat die Konsequenzen zu tragen). In der LCL wird dies auch überall so gemacht (Zeilen einer Listbox, Inhalt eines StringGrids, Schriftarten etc.)Traude hat geschrieben:Wenn ich in einer Klasse ein Objekt (also die Instanz einer anderen Klasse) als Read-Only-Property definiere, kann der Benutzer dieses Property-Objekt freigeben, was mir nicht recht ist.
Das ist -- didaktisch gesehen -- der "richtige" Weg ("Kapselung").Traude hat geschrieben:Mir fällt dazu eigentlich nur ein, die jeweiligen Methoden/Felder der Sub-Objekte als "Public" zu deklariern und im Hauptobjekt aufzurufen, was ich aber gern vermeiden würde.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 29
- Registriert: Mo 18. Aug 2008, 11:59
- OS, Lazarus, FPC: Ubuntu 8.04 + XP SP2 DualBoot, Lazarus 0.9.28, FPC 2.2.4
- CPU-Target: 32Bit
- Wohnort: Wien
Re: Object Properties
Dann muss ich mir was anderes überlegen, danke jedenfalls für die Antwort.