![]() |
type Auf Eigenschaft kann hier nicht zugegriffen werden
Hi,
ich habe folgenden Fehler: Zitat:
Delphi-Quellcode:
warum is das so?^^
type
ball = class private i_x,i_y:integer; public procedure mal_dich; published property i_pos_x: integer read i_x write i_x; property i_pos_y: integer read i_y write i_y; end; procedure mal_dich; var i:integer; begin i:=ball.i_pos_x;//hier is der fehler end; mfg gandime |
Re: type Auf Eigenschaft kann hier nicht zugegriffen werden
Weil Deine Variable genauso wie die Klasse heißt?
|
Re: type Auf Eigenschaft kann hier nicht zugegriffen werden
Lass das Ball mal weg und schau was dann passiert :D
Delphi-Quellcode:
type
ball = class private i_x,i_y:integer; public procedure mal_dich; published property i_pos_x: integer read i_x write i_x; property i_pos_y: integer read i_y write i_y; end; procedure mal_dich; var i:integer; begin i:=i_pos_x;//hier is der fehler end; |
Re: type Auf Eigenschaft kann hier nicht zugegriffen werden
Nimm das "ball." dort raus.
Erklärung: Eine Klasse kann statische Felder und Instanzfelder enthalten. Statische Felder werden von allen Instanzen geteilt und durch Klassenname.Feldname angesprochen. Instanzfelder werden nur von einer Instanz der Klasse benutzt (wie der Name schon sagt) und werden durch Self.Feldname angesprochen. Das Self. fügt Delphi aber implizit ein. Das selbe gilt auch für Methoden und Properties. |
Re: type Auf Eigenschaft kann hier nicht zugegriffen werden
Delphi-Quellcode:
type
Tball = class //habe mal den Klassennamen geändert private i_x,i_y:integer; public procedure mal_dich; published property i_pos_x: integer read i_x write i_x; property i_pos_y: integer read i_y write i_y; end; procedure Tball.mal_dich; //hier fehlte die Definition als Klassenmethode var i:integer; begin i:=self.i_pos_x; end; |
Re: type Auf Eigenschaft kann hier nicht zugegriffen werden
danke für die schnelle antwort jetzt gehts :-)
edit: wenn aber eine andere Procedure, die nichts mit Ball zutun hat hab ich wieder das selbe Prob nen beispiel:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin Tball.i_pos_x:=10; end; |
Re: type Auf Eigenschaft kann hier nicht zugegriffen werden
Delphi-Quellcode:
Nicht Klassen und Instanzen durcheinanderwerfen!
procedure TForm1.FormCreate(Sender: TObject);
var Ball: TBall; begin Ball := TBall.Create; Ball.i_pos_x:=10; end; |
Re: type Auf Eigenschaft kann hier nicht zugegriffen werden
Hai gandime,
Du musst erst eine Instanz deiner Klasse erzeugen.
Delphi-Quellcode:
Ausserdem solltest Du deiner Klasse einen
procedure TForm1.FormCreate(Sender: TObject);
var meinBall : TBall; begin meinBall := TBall.Create; Try meinBall.i_pos_x:=10; Finally meinBall.Free; // Das natürlich nicht im FormCreate ;-) end; end; ![]() |
Re: type Auf Eigenschaft kann hier nicht zugegriffen werden
ups doofe frage :oops:
jetzt gehts danke :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr. |
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