2012-08-29 6 views
0

이 System.pas에 다음과 같이 정의 있는데, TDate 싶게 TDateTime으로 찾고 : Delphi - TDate와 TDateTime이 같은 이유는 무엇입니까?

TDateTime = type Double; 

    TDate = type TDateTime; 
    TTime = type TDateTime; 

분명히 있는데, TDate과 TDateTime으로는 동일합니다.

저는 TDate와 TDateTime으로 작업하는 데 어려움을 겪었습니다. 왜냐하면 TDate에는 날짜 부분 만 있고 시간 부분은 포함하지 않기를 바랬습니다.

이제 궁금한 점이 무엇입니까? 변수를 TDate로 선언하면 dat 및 time 값이 아닌 날짜가 포함되어야합니다.

답변

8

이들은 동일하지 않습니다. 선언은

TDate = TDateTime; 
TTime = TDateTime; 

였다면 그들은 이 같은 있었다. 추가 type을 사용하면 여전히 기술적으로 동일하지만 (여전히 double 초임) 따로 말할 수 있습니다. 예를 들어, 두 가지 유형 (각각 날짜 선택 도구와 시간 선택 도구)에 대해 Object Inspector에서 서로 다른 속성 편집기를 사용할 수있게 해주는 반면 TDateTime에 '날짜 - 시간'선택 도구를 사용할 수 있습니다.

또한 이러한 경우가 아니더라도 다른 목적으로 다른 별칭을 사용하는 것이 좋습니다. 이렇게하면 소스 코드를 더 쉽게 이해할 수 있습니다. 당신이 다음

var 
    StartTime: TDate; 

을 할 경우 예를 들어, 당신은 (당신이 규범을 남용하지 않는 한) StartTime이 시간을 날짜에 대한 정보만을 포함하고 있지 것을 알고있다.

+0

문서 링크 : http://docwiki.embarcadero.com/RADStudio/en/Declaring_Types –

+1

또한 TDate가 선언 될 때 실제 var 매개 변수로 TDateTime을 사용할 수 없습니다. –

+0

물론 TDate 및 TTime 유형이 존재하지만 TDate에 날짜 (및 날짜 및 시간이 아닌)가 포함되어 있고 TTime에 시간 값만 포함되는 경우 코드가 이해하기 쉽습니다. ;). 그리고 프로그래머가 "규범을 남용하려고 할 때"컴파일러는 오류 또는 최소한 경고를 주어야합니다. – user1619275

관련 문제