![]() |
Klasse mit vordefinierter Variable?
Moin !
Ich baue gerade den Inhalt einer Unit in eine Klasse um. Folgende Deklaration:
Delphi-Quellcode:
Die Deklaration der Variable (1) geht ja ohne Probleme. Aber die bei (2) nicht.
type
TLVSpectraII = class(TObject) public function 1.....; function 2.....; private EnergieSumme: Double; // 1 _LastZellenzahl : Byte = 0; // 2 end; Kann mir jemand sagen wie ich das am besten machen kann? |
Re: Klasse mit vordefinierter Variable?
zu (2):
das geht so nicht. Kannst aber im Constructor (MyClass.Create) den Wert zuweisen. |
Re: Klasse mit vordefinierter Variable?
mit properties kann man das per default-wert machen, geht dann IMO nicht private
Delphi-Quellcode:
oder kleiner
TLVSpectraII = class(TObject)
private F_LastZellenzahl: Byte; procedure Set_LastZellenzahl(const Value: Byte); published property _LastZellenzahl : Byte read F_LastZellenzahl write Set_LastZellenzahl default 0; end;
Delphi-Quellcode:
TLVSpectraII = class(TObject)
private F_LastZellenzahl: Byte; published property _LastZellenzahl : Byte read F_LastZellenzahl write F_LastZellenzahl default 0; end; |
Re: Klasse mit vordefinierter Variable?
Du könntest auch einfach über der Klassendeklaration dir noch zusätzliche Konstanten deklarieren.
Delphi-Quellcode:
const
_LastZellenzahl: Byte = 0; type TLVSpectraII = class(TObject) public function 1.....; function 2.....; private EnergieSumme: Double; // 1 //_LastZellenzahl : Byte = 0; // 2 end; |
Re: Klasse mit vordefinierter Variable?
Moin !
Ich habe es jetzt mal so probiert:
Delphi-Quellcode:
type
TLVSpectraII = class(TObject) public constructor Create(Owner: TObject); override; function 1....; private EnergieSumme: Double; // _LastZellenzahl : Byte; // end;
Delphi-Quellcode:
Da kriege ich aber den Fehler "Eine statische Methode kann nicht überschrieben werden".
constructor TLVSpectraII.Create(Owner: TObject);
begin inherited Create(Owner); // Geerbten Konstruktor aufrufen. _LastZellenzahl := 0; // Variablen vor erster benutzung setzen _LastZyklus := 0; _LastStatus := 0; _LastTimeTicker := 0; end; Lasse ich Override weg, dann kriege ich in constructor TLVSpectraII.Create... folgende Meldung "Zu viele Parameter". Hmm, was ist hier nun falsch? @H4ndy: Könnte man machen. Aber was ist wenn ich ein neues Objekt über TLVSpectraII.Create erzeuge. Werden die Constanten dann auch neu angelegt? |
Re: Klasse mit vordefinierter Variable?
Der default Wert bei den Propertys ist KEIN Vorgabewert, der automatisch zugewiesen wird.
Der default Wert sagt nur dem Formulardesigner, bei welchem Wert er nichts in die Formularressource schreiben muss, weil es sowieso auf dem Vorgabewert ist. |
Re: Klasse mit vordefinierter Variable?
Zitat:
jetzt wo dus sagst. das kommt davon, wenn man dinge vorschlägt, die man selbst nicht nutzt. |
Re: Klasse mit vordefinierter Variable?
Zitat:
inherited Create; |
Re: Klasse mit vordefinierter Variable?
Moin !
@sh17: Also kann ich doch im Create meine Variablen setzen? Wie ist es mit dem
Delphi-Quellcode:
Wird das pro Objekt angelegt?
const
_LastZellenzahl: Byte = 0; type TLVSpectraII = class(TObject) ....... |
Re: Klasse mit vordefinierter Variable?
Zitat:
in der du die Klasse deklariert hast. Da du ja zur Zugriff auf die Konstante innerhalb der Klassen-Methoden brauchst, sehe ich darin kein Problem das so zu machen. Zitat:
Delphi-Quellcode:
(Im Gegensatz zum Create musst du Destroy immer überschreiben, aber auch da das "inherited Destroy;" nicht vergessen)
TLVSpectraII = class(TObject)
public constructor Create; function 1....; private EnergieSumme: Double; // _LastZellenzahl : Byte; // end; constructor TLVSpectraII.Create; begin inherited Create; // Geerbten Konstruktor aufrufen. _LastZellenzahl := 0; // Variablen vor erster benutzung setzen _LastZyklus := 0; _LastStatus := 0; _LastTimeTicker := 0; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 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