2012-03-21 3 views
9

내 의견으로는 TValue에 필수 메소드가 누락 된 것 같습니다. TValue.Equals (TValue).Delphi XE : TValue.Equals()가 어디에 있습니까?

바람직 변형, 기록 사이에 거짓 경기를 할 수 있습니다 TValue.ToString()를 사용하지 않고, 2 TValues을 비교 빠르고 괜찮은 방법 등

+0

DeHL (현재 중단됨)에는이를 수행 할 몇 가지 것이 있다고 생각합니다. 구체적인 사실을 모릅니다. 링크에 대해 http://code.google.com/p/delphilhlplib/ – awmross

답변

13

Delphi-Mocks는 두 가지 기능을 제공합니다 그래서 무슨 :

을 TValue에 대한 기록 도우미와
function CompareValue(const Left,Right : TValue): Integer; 
function SameValue(const Left, Right: TValue): Boolean; 

당신은 또한 스테판 Glienke에 의해 아파치 조건에 따라 허가에 따라 사용이 허가 TValue.Equals(TValue);

을 할 수 있습니다.

여기 스테판의 원본 소스는 delphisorcery입니다.

function TValueHelper.IsVariant: Boolean; 
begin 
    Result := TypeInfo = System.TypeInfo(Variant); 
end; 

을하고 SameValue 함수의 isString 비교 후

if Left.IsVariant and Right.IsVariant then 
begin 
    Result := Left.AsVariant = Right.AsVariant; 
end else 

를 삽입 : 당신이 변종의 기능을 확장해야하는 경우

추가합니다.

+0

Upvote가 표시되지만 여전히 불완전한 것으로 보입니다 (예 : 변형의 동등성이 없음). 나는 더 작은 버전을 찾고 있는데, 예를 들면. 메모리 주소. – Marius

+1

@ 마리우스 누락 된 기능을 직접 추가 할 수 있습니다. –

+0

@DavidHeffernan 그렇다면 내 초기 질문은 쓸모 없게됩니다. p – Marius