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