![]() |
Variable einen Anfangwert in der Deklaration zuweisen
Hi,
kann ich einer Variable direkt bei der deklaration einen Anfangswert zuweisen? Beispielsweise
Delphi-Quellcode:
i: Integer = 0;
|
AW: Variable einen Anfangwert in der Deklaration zuweisen
IIRC geht das nur bei globalen Variablen, nicht aber bei lokalen (was mich manchmal nervt).
MfG Dalai |
AW: Variable einen Anfangwert in der Deklaration zuweisen
Ok, dacht ich mir. Ja nervt mich auch etwas, gerade beim initialisieren :(
|
AW: Variable einen Anfangwert in der Deklaration zuweisen
Wieso nicht im OnCreate-Event?
Ist zwar wirklich manchmal nervig, da man manchmal einige Variablen vergisst, aber dabei knickt man sich keinen ab ;) |
AW: Variable einen Anfangwert in der Deklaration zuweisen
Der Witz ist doch, daß der Compiler derartige Wertzuweisungen doch auch in eine Variablenzuweisung umwandeln könnte.
Wert merken und direkt nach/in dem BEGIN ein
Delphi-Quellcode:
.
Variable := Wert;
Bei lokalen Variablen kein großes Problem. Nur bei Klassen, müsste man den Code irgendwo in einen Contructor machen ... nur welchen. |
AW: Variable einen Anfangwert in der Deklaration zuweisen
Zitat:
|
AW: Variable einen Anfangwert in der Deklaration zuweisen
Zitat:
Aber das wäre zumindestens eine "einfache" Lösung. Was wäre, wenn es in der Klasse garkeine eigenen Konstruktoren gäbe? (nur im Vorfahren und in Nachfahren) Oder mehrere Constructoren ... die können sich auch gegenseitig aufrufen, oder auch nicht. Und man kann auch Code/Zuweisungen vor dem Inherited ausführen, oder im Nachfahren ruft man das Inherited garnicht auf. Mir würde da wohl eher NewInstance einfallen, oder besser noch eine Art Multievent in InitInstance rein, bzw. eine neue virtuelle Methode in ala InitFields, denn dort ist auch der Code drin, welche alle Felder mit 0/nil initialisiert. |
AW: Variable einen Anfangwert in der Deklaration zuweisen
hä? :gruebel:
Ich kann (glaube ich) an einer Hand abzählen, wie oft ich einen Konstruktor mal überladen habe. In anderen Sprachen die (anders als Delphi) kein oder nur sehr eingeschränktes "Konstruktor-Chaining" erlauben hat sich meist eine "init"-Methode eingebürgert die dann alle Felder auf irgendeinen "Anfangswert" setzt. In Delphi habe ich hingegen immer einen "Grundkonstruktor" wo alles so gesetzt wird, wie es normal sein sollte. Ein "alternativer" Konstruktor ruft dann diesen auf.
Delphi-Quellcode:
TMyClass = class
protected var someField: Integer; protected var someOtherField: String; public constructor Create(); overload; public constructor Create(const stuff: String); overload; end; constructor TMyClass.Create(); begin inherited Create(); self.someField := 42; end; constructor TMyClass.Create(const stuff: String); begin self.Create(); self.someOtherField := stuff; end; |
AW: Variable einen Anfangwert in der Deklaration zuweisen
Zitat:
Delphi-Quellcode:
Wenn das so ginge, wäre es praktisch.
Type
TMyClass = Class fFoobar : Integer := 3; ... constructor Create; constructor Create(bar : Integer); ... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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