私の意見では、必須のメソッドがTValueから欠落しているようです。TValue.Equals(TValue)。
したがって、2つのTValueを比較するための高速で適切な方法は、できればTValue.ToString()を使用せずに、バリアントやレコードなどの間で誤った一致を許可する方法です。
Delphi-Mocksには2つの機能があります。
function CompareValue(const Left,Right : TValue): Integer;
function SameValue(const Left, Right: TValue): Boolean;
TValueのレコードヘルパーを使用すると、次のこともできます。TValue.Equals(TValue);
Apacheの条件の下で、StefanGlienkeの許可の下でライセンス供与されています。
これがStefanによる元のソースです:delphisorcery。
バリアントの機能を拡張する必要がある場合は、以下を追加します。
function TValueHelper.IsVariant: Boolean;
begin
Result := TypeInfo = System.TypeInfo(Variant);
end;
挿入します
if Left.IsVariant and Right.IsVariant then
begin
Result := Left.AsVariant = Right.AsVariant;
end else
関数内のisString比較の後SameValue
。