AGB  ·  Datenschutz  ·  Impressum  







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

denkfehler; array-> dynarray

Ein Thema von vsilverlord · begonnen am 8. Jan 2009 · letzter Beitrag vom 11. Jan 2009
 
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#28

Re: denkfehler; array-> dynarray

  Alt 8. Jan 2009, 15:09
Zitat von Luckie:
Warum machst du aus den Viechern keine Objekte mit Eigenschaften und Methoden? Verwalten würde ich das ganze dann in einer Containerklasse: http://www.michael-puff.de/Artikel/C...rKlassen.shtml
Ich würde da auch objektorientiert arbeiten. Das drängt sich ja geradezu auf.

Delphi-Quellcode:

type
  TViech = class(TCollectionItem)
  private
    FLaenge: Real;
    FHaare: Real;
    //..weitere Eigenschaften
  public
    constructor Create(Collection: TCollection); override;
    procedure Mutiere;
    procedure Assign(Source: TPersistent);
    //..weitere Methoden
    property Laenge: Real read FLaenge write FLaenge;
    property Haare: Real read FHaare write FHaare;
    //..weitere Eigenschaften
  end;

constructor TViech.Create(Collection: TCollection);
begin
  inherited;
  Laenge := 1; //Startparameter für ein Viech setzen
  Haare := 1;
end;

//Die Methode Assign brauchst du um ein Viech einem anderen Viech zuweisen zu können
procedure TViech.Assign(Source: TPersistent);
begin
  if Source is TViech then begin
    FLaenge := TViech(Source).FLaenge;
    FHaare := TViech(Source).FHaare;
    //...weitere Eigenschaften
  end;
end;
Die ganzen Viecher speicherst du in einer Collection ab.

Delphi-Quellcode:
type
  TViecher = class(TCollection)
  protected
    function GetViech(Index: Integer): TViech;
    procedure SetViech(Index: Integer; Value: TViech);
  public
    function Add: TViech;
    function Insert(Index: Integer) : TViech;
    property Viech[Index: Integer]: TViech read GetViech write SetViech; default;
  end;

function TViecher.GetViech(Index: Integer): TViech;
begin
  Result := TViech(inherited GetItem(Index));
end;

procedure TViecher.SetViech(Index: Integer; Value: TViech);
begin
  inherited SetItem(Index, Value);
end;

function TViecher.Add: TViech;
begin
  Result := TViech(inherited Add);
end;

function TViecher.Insert(Index: Integer): TViech;
begin
  Result := TViech(inherited Insert(Index));
end;
Damit stehen dir alle Wege offen.

Delphi-Quellcode:

//Irgendwo im Hauptprogramm...
var BlaueViecher: TViecher;
    RoteViecher: TViecher;

BlaueViecher := TViecher.Create(TViech); //Hier wird der Collection gesagt, von welchem Typ ihre Items sind!
RoteViecher := TViecher.Create(TViech);

//Neues Viech hinzufügen
BlaueViecher.Add //Fügt ein neues Viech mit den Standardvorgaben an

//Da "Add" eine Funktion ist, geht auch das:

var tempViech: TViech;

tempViech := BlaueViecher.Add; //tempViech verweist jetzt auf das neu angefügte Viech INNERHALB der Collection
tempViech.Mutiere; //und kann damit sofort weiter bearbeitet werden

//Eigenschaft eines Vieches ändern
BlaueViecher.Viech[1].Haare := 2;

//oder einem anderen Viech zuweisen
BlaueViecher.Viech[2].Assign(BlaueViecher.Viech[1]);

//oder mutieren
BlaueViecher.Viech[2].Mutiere;

//Die Anzahl der Viecher feststellen
BlaueViecher.Count;
  Mit Zitat antworten Zitat
 


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 16:19 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