![]() |
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:
gibt es eine lusung?
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 danke:) |
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. |
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 17:44 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