Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - private, protected, public ??


Horschdware - Di 30.03.04 22:53
Titel: private, protected, public ??
Ich hab folgendes erstellt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
type
  TWriter = class(TObject)
  private
    WOwner : TComponent;
    WDXDraw : TDXDraw;
    WFont : string;
    WSize : integer;
    WFontTable : integer;
    WPatternSkip : integer;
    WWriterImages : TDXImageList;
    WWriterImagePath : string;
    procedure SetFont(sFont : string);
    procedure SetSize(iSize : integer);
    function XDiff(CIdx : integer; Size : integer = 25) : integer;
    function YDiff(CIdx : integer; Size : integer = 25) : integer;
  protected
  public
    procedure Write(text : string; PosX, PosY : integer);
    constructor Create(aForm: TComponent; aDXDraw: TDXDraw);
    procedure SetWriterStyle(sFont : string; iSize : integer);
    property Font : string read WFont write SetFont;
    property Size : integer read WSize write SetSize;
    destructor Destroy;
  end;


Das ganze habe ich in mein Form1 eingebunden. Soweit so gut.
Eigentlich dürfte ich ja von Form1 aus nur die Teile im public Teil aufrufen könne, oder?
Ich kann aber auf alles zugreifen. Also auch auf die private Teile. Und das ist nicht gut.
Was mach ich nun?


Motzi - Di 30.03.04 23:02

Innerhalb einer Unit kann immer jedes Objekt auf alle Felder der Objekte zugreifen die ebenfalls in derselben Unit deklariert sind... -> einfach deine Klasse in eine eigene Unit auslagern und alles passt..! :)


Horschdware - Di 30.03.04 23:04

oh, ok, danke.
hab das mal zu testzwecken alles in eine unit rein.
dann ist ja alles klar.


Christian S. - Di 30.03.04 23:10

Nur der Vollständigkeit halber (Horschdware wird es nichts nützen):
In Delphi .NET gibt es die Sichtbarkeit "strict private". Dies bedeutet dann, dass die Elemente nur in der Klasse sichtbar sind, in der sie deklariert wurden. Auch "strict protected" gibt es, dort wird das ganze noch auf abgeleitete Klassen erweitert. Dabei ist es egal, wo diese deklariert wurden.


Horschdware - Di 30.03.04 23:12

danke, das hört sich so leicht abwertend an :twisted: :wink:


Christian S. - Di 30.03.04 23:32

Nein! :lol: Ich habe lediglich einen Blick auf Deine Delphi-Versionen geworfen! :-)


Horschdware - Di 30.03.04 23:46

aso, :idea: lol