Es scheint, dass es keine Möglichkeit gibt, NULL (entweder einen <<> nicht zugewiesenen Wert "
Der einzige Weg, den ich mir vorgestellt habe, ist, so etwas zu benutzen:
%Vor%Gibt es jemanden, der eine bessere Lösung kennt, was nicht mit 0 Datumswert überlappt?
Sind negative TDateTime-Werte gefährlich? (Als eine fähige Ressource für frühere Zwecke)
Wie Andreas bereits geschrieben hat, ist der TDateTime
-Typ tatsächlich double
und somit nicht "nullbar". Ich benutze
für einen leeren Datumswert, da dies ein unmögliches Datum von 00/00/0000
darstellt. Aber zum Beispiel verwendet DevExpress
Es scheint also kein vereinbartes Standardvale zu geben, Sie sollten sich für eines entscheiden, das Ihren Bedürfnissen entspricht.
Zuerst müssen Sie definieren, was Sie mit 'ein leerer TDateTime
Wert' meinen.
Ein TDateTime
-Wert ist ein Double mit dem Datum, das im ganzzahligen Teil codiert ist, und der Zeit, die im Bruchteil codiert ist. Das nächste, was einem 'Nulldatum' am nächsten kommt, ist wahrscheinlich 0
.
Testen Sie einfach ADate <> 0
, um zu testen, ob das Datum 'null' ist.
Aber Vorsicht: Wenn Sie eine TDateTime
lokale Variable deklarieren, dann ist dies nicht notwendigerweise =0
, bevor Sie einen Wert angeben. Es kann alles sein. Das Gleiche gilt natürlich auch für Variablen vom Typ integer
, double
, boolean
, ...
Ich glaube auch, dass ein TDateTime
mit dem Wert 0
das Datum 1899-12-30 codiert.
Schließlich sind negative TDateTime
-Werte vollkommen normal. Zum Beispiel entspricht -5000
1886-04-22
.
Ich verstehe den Code nicht richtig. Wenn Sie 0
als 'nicht zugewiesenen' Wert verwenden möchten (was schlecht ist, wenn Sie an Daten in der Nähe von 1899-12-30 interessiert sind), warum tun Sie nicht einfach
oder möglicherweise (aber nicht äquivalent!),
%Vor%In seiner Antwort gab ain einige vernünftigere Wahlmöglichkeiten für den Wert "nicht zugewiesener Termin".
tDateTime ist für die Werte zwischen 0 und -1 undefiniert, was bedeutet, dass eine tDateTime von -0.5 ein undefinierter Wert und nützlich für ein Nulldatum als Alternative zu NaN ist. DateTimeToString wird -0.5 genauso anzeigen wie +0,5;
Verwenden Sie PDateTime anstelle von TDateTime und senden Sie als Nullwert. Wenn kein Zeiger auf Wert ist, wird kein Wert ausgegeben.
Um den Wert zu überprüfen, verwenden Sie Assigned ptr:
%Vor%Tags und Links datetime delphi null unassigned-variable