![]() |
Delphi-Version: 2010
Wertebereich vererbter Eigenschaft begrenzen
Hallo,
ich arbeite mich gerade noch in Dlphi ein und habe zur Vererbung eine Frage. Ich habe von einer Klasse mehrer Klassen erfolgreich abgeleitet und arbeite damit. Nun möchte ich eine gemeinsam verwendete Eigenschaft (Integer) auf einen Bereich von -50 bis 150 einschränken. Dazu habe ich volgendes in der Methode zur Eigenschaft in der Mutterklasse implementiert. Die logs werden geschrieben. Nun arbeite ich aber hier mit einem call by value, wie bekomme ich einen call by reference? Denn der Werte "T" wird in der abgeleiteten Klasse nicht verändert. Oder habe ich einen größeren Denkfehler drin?
Code:
Vielen Dank für eure Hilfe.
procedure tClimaModel.setTSet(T: Double);
begin if T < -50 then begin T := -50; logthis('Error: TSet out of range (min)'); end else if T > 150 then begin T := 150; logthis('Error: TSet out of range (max)'); end; end; |
AW: Wertebereich vererbter Eigenschaft begrenzen
Natürlich kannst du so den wert nicht ändern ... ohne Zugriff auf die Variable.
Aber du mußt doch sowieso irgendwie die überschriebene Methode des Vorfahren aufrufen und dort gibst du dann den angepaßten Wert weiter.
Delphi-Quellcode:
oder falls das Logging nicht nötig ist:
procedure tClimaModel.setTSet(T: Double);
begin if T < -50 then begin T := -50; logthis('Error: TSet out of range (min)'); end else if T > 150 then begin T := 150; logthis('Error: TSet out of range (max)'); end; inherited; // oder inherited setTSet(T); end;
Delphi-Quellcode:
Du hast doch mit virtual und override überschrieben?
procedure tClimaModel.setTSet(T: Double);
begin inherited setTSet(Min(Max(T, -50), 150); end; |
AW: Wertebereich vererbter Eigenschaft begrenzen
Moment mal, die Funktien bearbeitet doch nur einen übergebenen Parameter. Ich glaube, wir sollten hier weit vor der Vererbungsproblematik ansetzen, nämlich:
Delphi-Quellcode:
procedure tClimaModel.setTSet(var T: Double);
|
AW: Wertebereich vererbter Eigenschaft begrenzen
Zitat:
Den Aufruf von Call by Value zu Call by Reference? Oder was genau bewirkt var an dieser Stelle? |
AW: Wertebereich vererbter Eigenschaft begrenzen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 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