Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Published propertys werden nicht angezeigt (https://www.delphipraxis.net/44173-published-propertys-werden-nicht-angezeigt.html)

Die Muhkuh 14. Apr 2005 17:31


Published propertys werden nicht angezeigt
 
Hi,

Delphi-Quellcode:
TEnvironment = class(TComponent)
private
  ...
published
   { Published-Deklarationen }
   property AllUsersProfile: string read FAllUsersProfile;
   property AppData: string read FAppData;
   property Path: TStringList read FPath;
 end;
Die Propertys sollten doch im OI angezeigt werden. Das tut legendlich nur die property "Path", die anderen beiden sind "verschwunden". Wird ja wohl kaum dadran liegen, das es kein write gibt?

Was könnte ich dagegen tun?

sniper_w 14. Apr 2005 17:46

Re: Published propertys werden nicht angezeigt
 
Zitat:

Wird ja wohl kaum dadran liegen, das es kein write gibt?
IMHO:
Ich denke schon. Denn OI ist da um die Eigenschaften zu ändern, und das ist mit ReadOnlyPropertys nicht möglich.

Die Muhkuh 14. Apr 2005 17:50

Re: Published propertys werden nicht angezeigt
 
Zitat:

Zitat von sniper_w
Zitat:

Wird ja wohl kaum dadran liegen, das es kein write gibt?
IMHO:
Ich denke schon. Denn OI ist da um die Eigenschaften zu ändern, und das ist mit ReadOnlyPropertys nicht möglich.

Hmm, kacke. Dann mach ich halt eine leere Setter-Methode

[edit] Aber warum wird dann Path angezeigt? Die kann man ja auch nicht ändern [/edit]

Khabarakh 14. Apr 2005 17:55

Re: Published propertys werden nicht angezeigt
 
Ich bin mir absolut nicht sicher, deswegen eher als Frage:
Bezieht sich write/read bei Klassen nicht nur auf den Pointer, sodass man mit readonly den Wert der Zeiger bekommt, somit die ganze Instanz verwenden kann, nur dem Zeiger keine neue/andere Instanz zuweisen kann?

Dani 14. Apr 2005 17:57

Re: Published propertys werden nicht angezeigt
 
Wird die überhaupt im Constructor erzeugt? Wahrscheinlich erkennt der Objektinspektor, dass es sich nicht um einen trivialen Typ handelt. Du kannst die Objektreferenz selbst nicht überschreiben, wohl aber dessen Eigenschaften ändern. Sowas wie TEnvironment.Create.Path := TStringlist.Create dürfte nicht gehen.

Robert_G 14. Apr 2005 18:24

Re: Published propertys werden nicht angezeigt
 
Einen Nachfahren von TPersistent wird er auch im OI zeigen wenn er readonly ist.
Schließlich weiß er ja, dass Assign unterstützt wird. ;)

Ansonsten wird eine readonly Property generell nie vom Delphi Streaming System erfasst.
Sie könnte ja beim Auslesen der Datei/Resource nicht wieder bestezt werden und wäre somit sinnloser Ballast ;)
Was nicht in der DFM landet, braucht auch keinen Platz im OI verschwenden So einfach ist das. :mrgreen:

Die Muhkuh 16. Apr 2005 11:40

Re: Published propertys werden nicht angezeigt
 
Hi,

ich hab das jetzt einfach so gemacht:

Delphi-Quellcode:
private
  FAllUsersProfile: string;
  procedure SetAllUsersProfile(const Value: string);
published
  property AllUsersProfile: string read FAllUsersProfile write SetAllUsersProfile;
end;

[...]

procedure TEnvironment.SetAllUsersProfile(const Value: string);
begin
  FAllUsersProfile := FAllUsersProfile;
end;
Ist vllt. keine sehr saubere Lösung, aber so gehts^^.

Robert_G 16. Apr 2005 11:57

Re: Published propertys werden nicht angezeigt
 
Du hast wohl gar keine Skrupel, oder? :mrgreen:
Was bringt es dir denn wenn der Wert sowieso readonly ist?
Außerdem hat dieser Wert nur etwas mit DEINEM System zu tun, das muss ja nicht unbedingt der einzige Rechner sein auf dem das Programm laufen soll.
Außerdem hast du nun scheinbar im Code die Möglichkeit die Property zu besetzen -> irgendwie ist dass ... :freak:

Die Muhkuh 16. Apr 2005 11:59

Re: Published propertys werden nicht angezeigt
 
Zitat:

Du hast wohl gar keine Skrupel, oder?
:angle2:

Habs jetzt doch anders gelöst. Hab mir einfach ein Kommentar reingeschrieben.

Delphi-Quellcode:
procedure TEnvironment.SetAllUsersProfile(const Value: string);
begin
  // Darf nicht geändert werden
end;
Der Sinn der Sache: Ich lese die Umgebungsvarialben aus. Diese soll man halt nicht ändern können. Nur auslesen halt ;)

woki 16. Apr 2005 12:34

Re: Published propertys werden nicht angezeigt
 
Hi,

schonmal rechtsclick auf OI, Eigenschaften, Checkbox "Nur Lesen Eigenschaften anzeigen" versucht?

Grüsse
Woki


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.
Seite 1 von 2  1 2      

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