Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie die Länge einr array eigenschaft checken (https://www.delphipraxis.net/83392-wie-die-laenge-einr-array-eigenschaft-checken.html)

schuetzejanett 1. Jan 2007 20:56


Wie die Länge einr array eigenschaft checken
 
Hallo, habe eine klasse spieler bei der ich die array eigenschaft punkte definiert habe.
Wie kann ich von einer anderen unit aus auf die anzahl der elemente dieser eigenschaft zugreifen um so z.b auf das letzte element zugreifen zu können

Hador 1. Jan 2007 21:00

Re: Wie die Länge einr array eigenschaft checken
 
1. Das Array muss im öffentlichen Teil deiner Klasse liegent (Wenn es zu einer Klasse gehört) (public)
2. Du musst die Unit in der sich das befindet einbinden.

EDIT:
und das letzte Element findest du, wenn es kein Statisches Array ist und du die Länge ohnehin schon weißt, mit
Delphi-Quellcode:
Pred(Length(Arrayname))

mkinzler 1. Jan 2007 21:01

Re: Wie die Länge einr array eigenschaft checken
 
Eim statischer oder dynamischer Array?

schuetzejanett 1. Jan 2007 21:04

Re: Wie die Länge einr array eigenschaft checken
 
deine zwei punkte hab ich ja schon berücksichtigt nur kann ich auf eine arrayeigenschaft ja nur mit a:= punkte[index];
zugreifen und ich weiß nun nicht wie ich auf den aktuellen also höchsten index komme

Mkinzler es ist ein dynamischer Array :

Hier mal die klassendefinition ohne implementierung vielleicht wird dann deutlicher worauf ich hinaus will es geht mir um die eigenschaften points und fields.
Delphi-Quellcode:
type TPlayer = class(TObject)
  private
   f_name :String;
   f_stand: integer;
   f_place: integer;
   f_fields : array of Tfield;
   f_points : array of string;

   procedure setStand(stand : Integer);
   procedure setName(name : string);
   procedure SetField(index: integer; const value: TField);
   procedure setPlace(const Value: Integer);
   procedure SetPoints(index: integer;const Value: string);
   function GetPoints(index: integer): string;
   function GetField(index: integer): TField;


  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 place:Integer read f_Place write setPlace;
    property points[index : integer]: string read GetPoints write SetPoints;
    property field[index : integer]: TField read GetField write SetField;


  end;

mkinzler 1. Jan 2007 21:08

Re: Wie die Länge einr array eigenschaft checken
 
Erzeuge ne weitere Property für den höchsten Eintrag.

Die Größe eine dyn. Array kannst du mit Length() ermittlen

Khabarakh 1. Jan 2007 21:14

Re: Wie die Länge einr array eigenschaft checken
 
Arrayeigenschaft ist ein schlechtgewähltes Wort, außerhalb von Borlands OH werden diese Wesen meist als indizierte Eigenschaften bezeichnet. Und es liegt in der Natur der indizierten Eigenschaften, dass sie keine Informationen über die validen Wertebereiche ihrer Parameter enthalten, genauso wie bei jeder Funktion; diese Informationen musst du also seperat, beispielsweise in einer zweiten Property (-> TList.Count), bereitstellen oder aber eben einfach das Array zurückgeben.

Mr_G 1. Jan 2007 21:20

Re: Wie die Länge einr array eigenschaft checken
 
Also wenn ich das richtig sehe hast du deine Eigenschaft mit Index definiert, was nach meinem Verständnis dazu führt, dass du die Länge nicht direkt mit Length() abfragen kannst. Solltest du die Indexfunktion (also die Get- und Set-Methoden mit Index) nicht benötigen könntest du in etwa sowas veranstalten:
Delphi-Quellcode:
type TMyStringArr = array of String;
...
private
  f_points: TMyStringArr;
...
public
  property points: TMyStringArr read f_points write f_points;
Gruß
Mr_G

P.S.: Da war ich wohl zu langsam... :cry: Vielleicht hilfts dir trozdem.


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