AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array eigenschaft initialisieren

Ein Thema von schuetzejanett · begonnen am 2. Dez 2006 · letzter Beitrag vom 2. Dez 2006
Antwort Antwort
schuetzejanett

Registriert seit: 5. Apr 2006
Ort: Fraureuth
62 Beiträge
 
#1

Array eigenschaft initialisieren

  Alt 2. Dez 2006, 16:30
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;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Array eigenschaft initialisieren

  Alt 2. Dez 2006, 16:33
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....
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
schuetzejanett

Registriert seit: 5. Apr 2006
Ort: Fraureuth
62 Beiträge
 
#3

Re: Array eigenschaft initialisieren

  Alt 2. Dez 2006, 16:34
und wie löse ich das problem .
Ich brauche ja ein array in dem die einzelnen punkte gespeichert werden
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Array eigenschaft initialisieren

  Alt 2. Dez 2006, 16:37
Tschaaa ... du brauchst eine Variable, die deine Points hält. Im Moment hast du nur die Zugriffsfunktionen definiert.

Zum Beispiel so
Delphi-Quellcode:
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;
//edit: Man tippe ich langsam ... 2 Beiträge in der Zeit
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
schuetzejanett

Registriert seit: 5. Apr 2006
Ort: Fraureuth
62 Beiträge
 
#5

Re: Array eigenschaft initialisieren

  Alt 2. Dez 2006, 16:43
Danke das wars , habe bloß gelesen das man bei arrayeigenschaften bei read und write kein feld schreiben darf und das etwas missverstanden
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Array eigenschaft initialisieren

  Alt 2. Dez 2006, 17:03
Jetzt noch die Parameter richtig anordnen, dann funktioniert es:

Delphi-Quellcode:
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;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 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