![]() |
Array eigenschaft initialisieren
Hallo habe eine klasse TPlayer geschrieben die über eine Array eigenschaft points verfügt. Wenn ich allerdings darauf zugreifen will, funktioniert das nicht, weil der zeiger von points auf nil zeigt.
Wie kann ich diese eigenschaft initialsieren weil setlength funktioniert ja nciht oder wie setze ich die länge schon beim objekt anlegen?
Delphi-Quellcode:
type TPlayer = class(TObject)
private f_name :String; f_stand:integer; f_games : array of Tgame; procedure setStand(stand : Integer); procedure setName(name : string); function GetPoints(index: integer): integer; procedure SetPoints(Value: integer;index: integer); public constructor Create(name : String); property name: String read f_Name write setName; //spielername property stand:Integer read f_Stand write setStand; //aktueller punktestand bzw. nächstes Ziel property points[index : integer]: integer read GetPoints write SetPoints; default end; implementation { TPlayer } constructor TPlayer.Create(name: String); begin SetName(name); end; function TPlayer.GetPoints(index: integer): integer; begin result := Points[index]; end; procedure TPlayer.setName(name: string); begin f_name := name; end; procedure TPlayer.SetPoints( value: integer;index: integer); begin points[index] := value; end; procedure TPlayer.setStand(stand: Integer); begin f_stand := stand; end; |
Re: Array eigenschaft initialisieren
du hast da irgendwie ne riesen Rekursion. Dein Property Points ruft die Methoden GetPoints und SetPoints auf welche wiederum auf das Property Points zugreifen welches auf die Methoden GetPoints und SetPoints zugreift....
|
Re: Array eigenschaft initialisieren
und wie löse ich das problem .
Ich brauche ja ein array in dem die einzelnen punkte gespeichert werden |
Re: Array eigenschaft initialisieren
Tschaaa ... du brauchst eine Variable, die deine Points hält. Im Moment hast du nur die Zugriffsfunktionen definiert.
Zum Beispiel so
Delphi-Quellcode:
//edit: Man tippe ich langsam ... 2 Beiträge in der Zeit :)
private
f_Points : array of Integer; //... //und dann musst du noch diese Funktionen anpassen, weil: Siehe SirThornberry function TPlayer.GetPoints(index: integer): integer; begin result := f_Points[index]; end; procedure TPlayer.SetPoints( value: integer;index: integer); begin f_points[index] := value; end; //und jetzt kannst du das array auch initialisieren constructor TPlayer.Create(name: String); begin SetName(name); SetLength(f_Points,10); //später das freigeben nicht vergessen end; |
Re: Array eigenschaft initialisieren
Danke das wars , habe bloß gelesen das man bei arrayeigenschaften bei read und write kein feld schreiben darf und das etwas missverstanden
|
Re: Array eigenschaft initialisieren
Jetzt noch die Parameter richtig anordnen, dann funktioniert es:
Delphi-Quellcode:
Gruß Hawkeye
type
TPlayer = class(TObject) private : // procedure SetPoints(Value: integer;index: integer); // so nicht procedure SetPoints (index: integer; value: integer); // besser so : end; // procedure TPlayer.SetPoints( value: integer;index: integer); // so nicht procedure TPlayer.SetPoints (index: integer; value: integer); // besser so begin f_points[index] := value; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 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