Soviel ich weiß, sind class members standardmäßig private. Mache es richtiger, dann schauts so aus (mit Verwendung von properties):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| type TGameButton=object private: mX: integer; mY: integer; mDown: boolean;
public: property X: integer read mX write mX; property Y: integer read mY write mY; property Down: boolean read mDown write mDown; end; |
Besser ist natürlich noch, du verwendest eine Klasse (
class) da objects eigentlich gar nicht mehr verwendet werden sollen (Rückwärtskompatiblität).
Das würde analog dann so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| type TGameButton=class private: mX: integer; mY: integer; mDown: boolean;
public: property X: integer read mX write mX; property Y: integer read mY write mY; property Down: boolean read mDown write mDown; end; |
Besser noch, du fügst einen constructor hinzu, wo default werde initialisiert werden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| type TGameButton=class private: mX: integer; mY: integer; mDown: boolean;
public: constructor Create();
property X: integer read mX write mX; property Y: integer read mY write mY; property Down: boolean read mDown write mDown; end;
constructor TGameButton.Create(); begin mX:=0; mY:=0; mDown:=false; end; |
Aber wie gesagt - der Fehler ist nur eine Zugriffsverletzung, weil standardmäßig members private sind.
Wer früher stirbt, ist länger tot.