Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi SetLength fur Property feld (https://www.delphipraxis.net/95378-setlength-fur-property-feld.html)

sk.Silvia 5. Jul 2007 23:40


SetLength fur Property feld
 
hallo, ich mochte ein dynamisches feld als property benutzen, nur gibt es da ein problem,
sobald ich SetLength fur das dynamische property feld rufe, gibt es einen fehler das eine constante nich durch den var parameter ubertragen werden kann...


Delphi-Quellcode:
type array_of_TAsteroid = array of TAsteroid;

type BlaBla = class
...
  function read_Asteroids : array_of_TAsteroid;
  procedure write_Asteroids(iToWrite : array_of_TAsteroid);

  property prAsteroids : array_of_TAsteroid read read_Asteroids write write_Asteroids;
...

    SetLength(prAsteroids, Length(prAsteroids) + 1); <--FEHLER HIER
gibt es eine lusung?

danke:)

Muetze1 5. Jul 2007 23:50

Re: SetLength fur Property feld
 
Du hast geschrieben, dass er beim Lesen der Property eine Function aufrufen soll. Beim Setzen eine Methode. Was soll SetLength() denn dabei vergrössern? Der Rückgabewert der Funktion interessiert nicht die Bohne und den Setter stört es nicht.

Abhilfe:

1. Entweder du definierst das Array einfach Public also ohne Property
2. Oder du nutzt kein dynamisches Array sondern ein Listenobjekt.
3. Oder cruiser's Lösung. Bin ich nicht drauf gekommen, da ich grundsätzlich niemals dynamische Arrays in Properties nutzen bzw. veröffentlichen würde.

cruiser 5. Jul 2007 23:50

Re: SetLength fur Property feld
 
Ich würde eine Setlength Methode in die Klasse einbauen meinetwegen

Delphi-Quellcode:
  property AsteroidCount: Integer read GetAsCount write SetAsCount;

  {...}

  procedure <class>.SetAsCount(const Value: Integer);
  begin
    SetLength(fAsteroids, Value);
  end;

  function <class>.GetAsCount: Integer;
  begin
    Result := Length(fAsteroids);
  end;


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