Wie können Delphi-Datensätze automatisch initialisiert werden?

8

Um Delphi-Datensätze zu initialisieren, habe ich immer eine Methode (Klasse oder Objekt) hinzugefügt, die mit bekannten guten Standardwerten initialisiert werden würde. Delphi erlaubt auch die Definition von "Konstruktoren" mit Parametern, aber Sie können nicht Ihren eigenen parameterlosen "Konstruktor" definieren.

%Vor%

Angesichts des obigen Datensatzes gibt es keine Warnung, dass ein Datensatz nicht initialisiert wurde. Entwickler können es unterlassen, Init für den Datensatz aufzurufen. Gibt es eine Möglichkeit, Datensätze automatisch zu zu initialisieren, möglicherweise mehr als nur eine einfache FillChar ;

Zum Beispiel

%Vor%

Wie kann ein Datensatz automatisch auf meine Standardwerte initialisiert werden?

[Notiz] Ich möchte das Problem nicht ändern, nachdem es beantwortet wurde. Alle Leser werden angewiesen, die Kommentare zu bewährten Methoden zur Verwendung von Klassenmethoden für die Initialisierung anstelle einer mutierenden Objektmethode zu lesen.

    
Jasper Schellingerhout 08.09.2016, 13:57
quelle

2 Antworten

3

Sie können ein verstecktes Zeichenfolgenfeld verwenden (das automatisch mit einer leeren Zeichenfolge initialisiert wird), um eine "pünktliche" Initialisierung und implizite Operatoren zu implementieren, um Implementierungsdetails zu verbergen. Der folgende Code zeigt, wie ein 'doppeltes' Feld implementiert wird, das automatisch mit Pi initialisiert wird.

%Vor%

Es gibt jedoch keine gute Möglichkeit, diese Lösung generischer in Bezug auf den Standardwert zu machen - wenn Sie einen anderen Standardwert benötigen, müssen Sie TAutoDouble-Definition / Implementierung klonen und den Standardwert ändern.

    
gabr 08.09.2016, 14:57
quelle
2

AFAIK können Sie nicht, ohne auf Tricks zurückgreifen zu müssen, die es nicht wert sind (vielleicht mit Hilfe von Schnittstellenfeldern, die garantiert initialisiert werden).

    
Uli Gerhardt 08.09.2016 14:11
quelle

Tags und Links