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