Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Standardwert für Eigenschaft definieren (https://www.delphipraxis.net/112969-standardwert-fuer-eigenschaft-definieren.html)

Yheeky 30. Apr 2008 12:55


Standardwert für Eigenschaft definieren
 
Hi,

man kann ja bei einer globalen Variable einen Standardwert definieren wie z.B.

Delphi-Quellcode:
var xWert : Integer = 30;
Ich habe nun eine kleine Datenstruktur erstellt und da funktioniert das nicht.

Delphi-Quellcode:
type
  TFahrzeug = (auPKW, auLKW);

  TFahrzeugdaten = record
    Art : TFahrzeug = auPKW;
    Marke : String;
    AnzahlRaeder, Tueren : SmallInt;
  end;
Wieso funktioniert die Zuweisung eines Standardwertes hier nicht? Wichtigere Frage: wie kann ich einen Standardwert definieren?

shmia 30. Apr 2008 13:00

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.

tomsel 30. Apr 2008 13:47

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.

Yheeky 30. Apr 2008 18:50

Re: Standardwert für Eigenschaft definieren
 
Super, klappt wunderbar! Danke!

tomsel 30. Apr 2008 19:16

Re: Standardwert für Eigenschaft definieren
 
Welche Variante? Klasse mit Constructor oder Rekordkonstante?

Fussball-Robby 30. Apr 2008 19:27

Re: Standardwert für Eigenschaft definieren
 
Ich denke die Rekordkonstante.
Bei einer Klasse kann man es übrigens auch so machen:
Delphi-Quellcode:
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;
Mfg

tomsel 30. Apr 2008 19:36

Re: Standardwert für Eigenschaft definieren
 
Sicher? Die Direktive default hat doch eine andere Funktion

Apollonius 30. Apr 2008 19:38

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.

Fussball-Robby 30. Apr 2008 19:41

Re: Standardwert für Eigenschaft definieren
 
Gut, wieder was dazu gelernt. Zum Glück hab ich default noch nie wirklich so benutzt :mrgreen:

Yheeky 30. Apr 2008 19:43

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.
Seite 1 von 2  1 2      

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