1

System.pas を見ると、TDate と TDateTime が次のように定義されています。

  TDateTime = type Double;

  TDate = type TDateTime;
  TTime = type TDateTime;

明らかに TDate と TDateTime は同じです。

TDate には日付部分のみが含まれ、時間部分は含まれないと予想していたため、TDate と TDateTime の操作に苦労しました。

今、私は疑問に思っています:これの背後にある意味は何ですか? 変数を TDate として宣言すると、日付と時間値ではなく、日付が含まれている必要があります。

4

1 に答える 1

8

それらは同じではありません。宣言があった場合

TDate = TDateTime;
TTime = TDateTime;

彼ら同じでした。を追加typeすると、技術的には同じ、つまりdoubles のままですが、区別することができます。これにより、たとえば、オブジェクト インスペクターで 2 つのタイプ (それぞれ日付ピッカーと時間ピッカー) に対して異なるプロパティ エディターを使用できるようになり、一方、TDateTime.

また、これがなくても、目的に応じて「エイリアス」を使い分けると良いかもしれません。これにより、ソース コードが理解しやすくなる場合があります。たとえば、

var
  StartTime: TDate;

StartTime次に、日付に関する情報のみが含まれており、時間に関する情報が含まれていないことがわかります(規範を乱用しない限り)。

于 2012-08-29T08:58:52.303 に答える