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
 
#40

Re: denkfehler; array-> dynarray

  Alt 11. Jan 2009, 09:46
Zitat von vsilverlord:
Das mit der Collection sieht gut aus.
2 Fragen:
1. Ist die Anzahl der möglichen Viecher höher oder niedriger wie bei dem array, was ist der vorteil zum array [außer dass es eleganter ist und besser aussieht]
2. kann ich auch kollektion einer kollektion bilden? also angenommen, ich möchte alle viecher verändern, aber den Forschritt festhalten, in dem ich alle Versionen des Viechs habe?
Was ist der Vorteil? Naja, zunächst mal ist das eine elegante objektorientiere Programmierung. Die bringt dir natürlich auch den Vorteil, dass du dein Viech nur an einer Stelle (Deklaration von TViech) ändern musst und alle Viecher die Änderung mit machen. Allerdings, das sollte man nicht verschweigen, wird der Speicherbedarf wahrscheinlich etwas höher ausfallen (und noch höher, wenn du noch alle Vichversionen mit führen willst.) als bei einem Array.

Zur zweiten Frage. Das habe ich noch nicht probiert, aber im einfachsten Fall ist es so, dass du einfach im TVich noch eine Collection einbaust. Dabei sieht TViechVersion (TCollectionItem) und TViecherVersion(TCollection) im Prinzip genau so aus, wie TViech und TViecher bisher aussahen. Du kannst da natürlich die Methoden zum Mutieren weglassen, weil du nur Daten darin sichern willst.

Delphi-Quellcode:
type
  TViech = class(TCollectionItem)
  private
    FLaenge: Real;
    FHaare: Real;
    FVersion: TViecherVersion;
    //..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;
    property Version: TViecherVersion read FVersion write FVersion;
    //..weitere Eigenschaften
  end;
nicht vergessen im Constructor:
  FVersion := TViecherVersion.Create(TViechVersion); und dazu brauchst du dann noch im Destructor:
  FVersion.Free; Die Methode "Mutiere" von TViech könnte dann so aussehen:
Delphi-Quellcode:
procedure TViech.Mutiere;
  var tempVersion: TViechVersion;
begin
  tempVersion := Version.Add;
  tempVersion.Assign(self); //Die aktuelle Version des Viechs zuweisen, bin nicht sicher, ob das so klappt

  //Eventuell könnte auch dies funktionieren, dann braucht man keine tempVersion -> probieren!
  Version.Add.Assign(self);
  
  //und jetzt wird fröhlich mutiert
  Laenge := //irgendwas;
  Haare := //irgendwas;
end;
  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 21:51 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