![]() |
Standardwert für Eigenschaft definieren
Hi,
man kann ja bei einer globalen Variable einen Standardwert definieren wie z.B.
Delphi-Quellcode:
Ich habe nun eine kleine Datenstruktur erstellt und da funktioniert das nicht.
var xWert : Integer = 30;
Delphi-Quellcode:
Wieso funktioniert die Zuweisung eines Standardwertes hier nicht? Wichtigere Frage: wie kann ich einen Standardwert definieren?
type
TFahrzeug = (auPKW, auLKW); TFahrzeugdaten = record Art : TFahrzeug = auPKW; Marke : String; AnzahlRaeder, Tueren : SmallInt; end; |
Re: Standardwert definieren
Standardwerte gibt es bei Delphi nur bei Übergabeparametern oder bei globalen Variablen.
Beste Lösung für dich: mach aus dem Record ein Klasse und füge einen Konstruktor hinzu. Im Konstruktor werden dann die Standardwerte gesetzt. |
Re: Standardwert für Eigenschaft definieren
Delphi-Quellcode:
type
TFahrzeug = (auPKW, auLKW); TFahrzeugdaten = record Art : TFahrzeug; Marke : String; AnzahlRaeder, Tueren : SmallInt; end; const Fahrzeug: TFahrzeugdaten = (Art: auPKW; Marke: 'Töfftöff'; AnzahlRaeder: 5; Tueren: 0); OH Stichwort "typisierte Konstanten" -> "Rekord-Konstanten" Auch, wenn's Konstante heißt, ist eine typisierte Konstante wie eine Variable zu verwenden. Es handelt sich also genau genommen um eine initialisierte Variable. |
Re: Standardwert für Eigenschaft definieren
Super, klappt wunderbar! Danke!
|
Re: Standardwert für Eigenschaft definieren
Welche Variante? Klasse mit Constructor oder Rekordkonstante?
|
Re: Standardwert für Eigenschaft definieren
Ich denke die Rekordkonstante.
Bei einer Klasse kann man es übrigens auch so machen:
Delphi-Quellcode:
Mfg
type
TFahrzeug = (auPKW, auLKW); TFahrzeugdaten = class private FArt: TFahrzeug; procedure SetArt(const Value: TFahrzeug); published property Art : TFahrzeug read FArt write SetArt default auPKW; end; |
Re: Standardwert für Eigenschaft definieren
Sicher? Die Direktive default hat doch eine andere Funktion
|
Re: Standardwert für Eigenschaft definieren
Den Default-Wert muss man trotzdem noch im Konstruktor setzen. Er bewirkt nur, dass kein Eintrag in der .dfm-Datei gemacht wird, falls er gesetzt ist.
|
Re: Standardwert für Eigenschaft definieren
Gut, wieder was dazu gelernt. Zum Glück hab ich default noch nie wirklich so benutzt :mrgreen:
|
Re: Standardwert für Eigenschaft definieren
Die Variante aus Beitrag #3. Muss nicht mal alle Eigenschaften definieren, sondern es reicht, wenn ich eine definiere. Spricht etwas gegen diese Variante?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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