Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Eigenschaft wird gesetzt ohne Wirkung

  Alt 25. Jan 2009, 17:08
Hallo ihr,

ich möchte standardmäßig eine Eigenschaft auf einen bestimmten Wert gesetzt haben. Eigentlich sollte das doch so gehen:
Delphi-Quellcode:
type
  TReserveManagment = (rmOwner, rmProgressive, rmExact);
[...]
    property ReserveManagment : TReserveManagment read FReserveManagment write SetReserveManagment default rmExact;
Nun reicht das nicht, also wollte ich vorübergehend das einfach ins Create packen:
Delphi-Quellcode:
constructor TIntegerList.Create;
begin
  inherited;
  FCount := 0;
  SetReserveManagment(rmExact);
  ReserveManagment := rmExact;
end;
Aber beide Varianten haben keine Auswirkungen auf den Wert von FReserveManagment. Er ist weiterhin rmOwner, was im Nachinein Probleme bringt. Aber wenn man es nach dem Create von außen sozusagen setzt, funktioniert es wunderbar.

Zur Information: Er springt in beiden Aufrufen (einmal direkt, einmal indirekt @ property) nicht in die Methode SetReserveManagment.

Delphi-Quellcode:
procedure TIntegerList.SetReserveManagment(const Value: TReserveManagment);
begin
  FReserveManagment := Value;
  case Value of
    rmProgressive: SetLength(FIntegers, (FCount div RESERVE_DELTA + 1) * RESERVE_DELTA);
    rmExact: SetLength(FIntegers, FCount);
  end;
  FReservedLength := Length(FIntegers);
end;
Wie kann ich nun die Klasse dazu bringen, standardmäßig "rmExact" in FReserveManagment stehen zu haben (abgesehen davon oben die Werte der Enumeration zu tauschen, weil das kann es ja nicht sein... Das behebt nur die Symptome nicht das Problem). Selbst ein tauschen der Werte in der Enumeration hilft nicht.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat