Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Property "Readonly" machen (https://www.delphipraxis.net/136218-property-readonly-machen.html)

Jonelmeier 25. Jun 2009 22:08


Property "Readonly" machen
 
Hi!

Kurze Frage:
Ist es möglich, eine Property einer eigenen Klasse nach außen irgendwie als "ReadOnly" zu deklarieren?

Ich würde diese Property gerne innerhalb der Klasse verändern, aber eine Änderung von außen nicht zulassen.

Gruß aus Hamburg!

Die Muhkuh 25. Jun 2009 22:11

Re: Property "Readonly" machen
 
Einfach der Property kein Write mitgeben und intern das Feld und nicht die Property ändern.

Satty67 25. Jun 2009 22:11

Re: Property "Readonly" machen
 
Einfach den Write Abschnitt weglassen?

Ok, da war einer schneller, dann pimpe ich meine Antwort einfach:
Delphi-Quellcode:
// statt
property MyInteger : Integer Read GetMyInteger Write SetMyInteger;
// so
property MyInteger : Integer Read GetMyInteger;
Am besten nach Deklaration in der Klasse Strg-Shift-C um den Rest automatisch anlegen zu lassen.

omata 25. Jun 2009 22:12

Re: Property "Readonly" machen
 
Delphi-Quellcode:
type
  TMyClass = class
  private
    FData:integer;
  public
    constructor create;
    property ReadOnlyData:integer read FData;
  end;

:

constructor TMyClass.create;
begin
  FData:=1;
end;

Jonelmeier 25. Jun 2009 22:15

Re: Property "Readonly" machen
 
Ja, natürlich :wall:

Danke an euch!

webcss 26. Jun 2009 07:12

Re: Property "Readonly" machen
 
...oder nachträglich, indem du via RTTI die SetProc einer published property nil setzt

uligerhardt 26. Jun 2009 07:39

Re: Property "Readonly" machen
 
Zitat:

Zitat von webcss
...oder nachträglich, indem du via RTTI die SetProc einer published property nil setzt

Was natürlich nichts dran ändert, dass jeder die Eigenschaft im Quellcode setzen kann.

webcss 26. Jun 2009 09:37

Re: Property "Readonly" machen
 
Zitat:

Zitat von uligerhardt
Was natürlich nichts dran ändert, dass jeder die Eigenschaft im Quellcode setzen kann.

bezieht sich auch vor allem auf geerbte Eigenschaften (wo man vielleicht keinen Quellcode hat).


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz