Delphi XE: где мой TValue.Equals()?

кажется, что один, на мой взгляд, обязательный метод отсутствует в TValue; TValue.Equals(TValue).

Так что быстрый и достойный способ сравнения 2 TValues, предпочтительно без использования TValue.ToString (), который допускает ложные совпадения между вариантами, записями и т. д.

1 ответов


Делфи-Глумится представляет две функции:

function CompareValue(const Left,Right : TValue): Integer;
function SameValue(const Left, Right: TValue): Boolean;

с помощником записи для TValue вы также можете сделать TValue.Equals(TValue);

лицензия на условиях Apache и с разрешения Стефана Гленке.

вот оригинальный источник Стефана: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 в the