ЛР5. Перегрузка операций и вариантные типы

Для подавления предупреждений о невозможности использования инлайн-функций как макросов при обработке вариантных типов, рекомендуется использовать директиву {$WARN 6058 off}

Задания

  1. Разработать перегрузку оператора присваивания, операции прямого преобразования типа и арифметических операций +,-,*,/ для взаимодействия различных типов double, string и variant (содержит значения только типов double и string). Правила взимодействия:
    Оператор присваивания и операция прямого преобразования типа:
     string->double: в виде числа - в это число, иначе в 0.0
     double->string: из числа в строку, 6 знаков после десятичной точки
    Aрифметические операции +,-,*,/ для комбинации различных типов double, string и variant должны возвращать вещественный результат

  2. Разработать перечислители для целочисленного типа и типа variant (содержит значение только целочисленного типа), позволяющие получать последовательный доступ к цифрам числа, от младшей к старшей. В результате использования перечислителя следующая программа:
    var c:integer;
    begin
      for c in 123456 do write(c:2);
    end.
    
    выведет строку 6 5 4 3 2 1

    Аналогичным образом сработает и следующая программа:
    var c:integer; v:variant;
    begin
      v:=123456;
      for c in v do write(c:2);
    end.