2016-09-21 1 views
4

데이터 형식을 변환 할 때 Variants이 느리다는 것을 알고 있습니다. 정수를 포함하는 두 개의 variant 값을 단순히 추가하더라도 마찬가지입니다. 나는 또한 TValue과 같은 변종처럼 보이는 또 다른 비슷한 것을 발견했습니다.델파이 변형 및 TValues ​​

그들 사이의 차이점은 무엇입니까?

나는 TStopWatch을 사용하여 고전적인 속도 테스트를 만들기 위해 고려하고 있지만, 사용할 때 나는 데이터 형식을 변환하지만 값의 교통

답변

14

TValue은 변형 형이 아닙니다. Variant처럼 데이터 변환을 수행하지 않습니다. TValue에 현재 보유하고있는 유형과 다른 유형을 반환하고 요청한 유형이 요청 된 유형과 할당 호환되지 않는 경우 (즉, 보통 은 암시 적으로이 일반 언어 구문으로 변환되지 않음) TValueEInvalidCast 예외.

16

TValue을 의미하지 않는다 차이를 이해하기 충분하다 생각하지 않습니다 RTTI.

예를 들어 Integer에서 Int64 또는 Byte에서 Integer과 같이 직접 할당 할 수있는 데이터 유형 만 변환 할 수 있습니다. 그러나 Variant과 달리 숫자를 포함하는 string을 변환하여 Integer으로 변환 할 수는 없지만 EInvalidCast 예외는 발생합니다.