AGB  ·  Datenschutz  ·  Impressum  







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

SetLength fur Property feld

Offene Frage von "sk.Silvia"
Ein Thema von sk.Silvia · begonnen am 6. Jul 2007 · letzter Beitrag vom 6. Jul 2007
Antwort Antwort
Benutzerbild von sk.Silvia
sk.Silvia

Registriert seit: 8. Feb 2006
Ort: Slovenia
90 Beiträge
 
Delphi 7 Personal
 
#1

SetLength fur Property feld

  Alt 6. Jul 2007, 00:40
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
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: SetLength fur Property feld

  Alt 6. Jul 2007, 00:50
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.
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: SetLength fur Property feld

  Alt 6. Jul 2007, 00:50
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;
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:59 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