Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Wieso kann ich das Property nicht aufrufen? (https://www.delphipraxis.net/139660-wieso-kann-ich-das-property-nicht-aufrufen.html)

Schnittcher 2. Sep 2009 12:33


Wieso kann ich das Property nicht aufrufen?
 
Hallo,

könnte ihr mir sagen wieso ich das Property nicht aufrufen kann?

Unit1:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, zahlen;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var zahlenraten: TZahlen;
begin
 zahlenraten:= TZahlen.Create;
 zahlenraten.SpielerZahl //<--- das Cannot access protected symbol TZahlen.SpielerZahl
end;

end.
Unit 2:

Delphi-Quellcode:
unit zahlen;

interface

type
  TZahlen = class(TObject)
  private
    FSpielerZahl: Integer;
    FZahl: Integer;
    FSpZahl: Integer;
    procedure set_FSpZahl(const AValue: Integer);
    procedure Zahl;
  protected
    property SpielerZahl: Integer write set_FSpZahl;
  end;

implementation

procedure TZahlen.set_FSpZahl(const AValue: Integer);
begin
  FSpZahl := AValue;
end;

procedure TZahlen.Zahl;
begin
  randomize;
  FZahl := random(50);
end;

end.
Gruß,
Schnittcher

chaosben 2. Sep 2009 12:35

Re: Wieso kann ich das Property nicht aufrufen?
 
Weil die Property in deiner Implementation protected ist. Schreib sie einfach in den public/published-Teil und schon gehts.

In etwa so:
Delphi-Quellcode:
type
  TZahlen = class(TObject)
  private
    FSpielerZahl: Integer;
    FZahl: Integer;
    FSpZahl: Integer;
    procedure set_FSpZahl(const AValue: Integer);
    procedure Zahl;
  public //<------------
    property SpielerZahl: Integer write set_FSpZahl;
  end;

Schnittcher 2. Sep 2009 12:36

Re: Wieso kann ich das Property nicht aufrufen?
 
Hallo,

aber war es nicht so Methoden und Eigenschaften die im Protected Teil stehen von Units benutzt werden können?
Also wenn sie eingebunden sind?

Gruß,
Schnittcher

chaosben 2. Sep 2009 12:37

Re: Wieso kann ich das Property nicht aufrufen?
 
Das geht nur innerhalb der gleichen Unit.

DeddyH 2. Sep 2009 12:39

Re: Wieso kann ich das Property nicht aufrufen?
 
Wobei mir nicht ganz klar ist, wieso das als WriteOnly-Property deklariert wurde.

Add: protected-Methoden und -Properties können in abgeleiteten Klassen benutzt werden, für andere sind sie nicht sichtbar.

Schnittcher 2. Sep 2009 12:39

Re: Wieso kann ich das Property nicht aufrufen?
 
Hallo,

achso dann hatte ich das falsch verstanden.

Danke.

Gruß,
Schnittcher


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:29 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