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 protected ? (https://www.delphipraxis.net/17939-protected.html)

Hansa 11. Mär 2004 19:32


protected ?
 
Hi,

ich habe eine Variable im private Abschnitt deklariert. Nun habe ich gemerkt, daß ich die auch in abgeleiteten Formularen brauche und habe sie in den protected Abschnitt verschoben: Kein Zugriff war möglich. Dann wanderte sie weiter in "public", das ging. Dann wieder zurück nach "protected" : ging auch. :wall:

gekmihesg 11. Mär 2004 19:51

Re: protected ?
 
wann kommt die frage?

fkerber 11. Mär 2004 19:58

Re: protected ?
 
Hi!

Ich glaube, die Frage besteht darin, warum es in protected geht, nachdem aus public kam, aber nicht, als es aus private kam.

Ciao fkerber

dizzy 11. Mär 2004 22:06

Re: protected ?
 
Für mich klingt's eher wie eine Feststellung mit unterschweliger Bitte um Prüfung, und bei Bestätigung eine Warnung ;)

Hansa 11. Mär 2004 23:46

Re: protected ?
 
Dann sage mir mal die Antwort.

Hansa 11. Mär 2004 23:48

Re: protected ?
 
Zitat:

Zitat von dizzy
und dann noch die unterschwellige Bitte. Wie gehts?


Robert Marquardt 12. Mär 2004 05:09

Re: protected ?
 
Innerhalb der Unit ist von private bis published alles zugaenglich.
Von einer anderen Unit aus gilt:
- private immer verborgen
- protected nur in einer abgeleiteten Klasse zugaenglich! Nicht in der Klasse selbst.
- public zugaenglich
- published zugaenglich

APP 12. Mär 2004 06:16

Re: protected ?
 
Hallo Robert,
Zitat:

Zitat von Robert Marquardt
- protected nur in einer abgeleiteten Klasse zugaenglich! Nicht in der Klasse selbst. :shock:

Du meinst bestimmt, falls in der anderen Unit eine andere Klasse definiert ist, oder?

Code:
(Aus der Onlinehilfe)
Sichtbarkeit  Bedeutung & Verwendung

private    Zugriff nur für den Quelltext, der sich in derselben Unit befindet,
            in der auch die Klasse definiert ist.   
            Verbirgt die Details der Implementierung.
protected  Zugriff nur für den Quelltext, der sich in der Unit (bzw. in den Units) befindet, in der auch die
            Klasse und ihre Nachkommen definiert sind.   
            Definiert die Schnittstelle des Komponentenentwicklers.
public     Zugriff für jeden Quelltext.   
            Definiert die Laufzeit-Schnittstelle.
automated  Zugriffsmöglichkeit für jeden Quelltext. Auf dieser Stufe werden Automatisierungs-Typinformationen
            erzeugt.   
            Nur für OLE-Automatisierung.
published  Zugriff für jeden Quelltext. Außerdem ist der Zugriff vom Objektinspektor aus möglich.
            Definiert die Entwurfszeit-Schnittstelle.

Robert Marquardt 12. Mär 2004 07:58

Re: protected ?
 
Genau. In der anderen Unit muss man von der Klasse ableiten und kann dann die protected Member zugreifen.
Es finden sich daher gerne Konstrukte der Art
Delphi-Quellcode:
type
  // die eifachste Ableitung die moeglich ist
  THackMyObject = class(TMyObject);

begin
  // die Umtypung ist gefahrlos, da die Klassen gleich sind,
  // aber nun wird der abgeleitete Typ verwendet
  THackMyObject(MyObject).ProtectedMember;

Garby 12. Mär 2004 08:07

Re: protected ?
 
Zitat:

Zitat von Robert Marquardt
Innerhalb der Unit ist von private bis published alles zugaenglich.
Von einer anderen Unit aus gilt:
- private immer verborgen
- protected nur in einer abgeleiteten Klasse zugaenglich! Nicht in der Klasse selbst.
- public zugaenglich
- published zugaenglich

Ist es nicht so, dass Private deklarationen nur innerhalb des gleichen type Abschnitts sichtbar sind?
Delphi-Quellcode:
type
  TmyObject = class(TObject);
  TyourObject = class(TmyObject); // sieht private von TmyObject
Delphi-Quellcode:
type
  TmyObject = class(TObject);
type
  TyourObject = class(TmyObject); // sieht NICHT private von TmyObject


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr.
Seite 1 von 2  1 2      

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