Новые книги

Это захватывающая и практически полная история крупнейшей IT-компании России, основанная на десятках авторских интервью с теми, кто строил главный поисковик Рунета начиная с 90-х и заканчивая сегодняшним днем.
Данное руководство по Ubuntu для новичков написано для тех, кто хочет легко и без проблем сменить свою операционную систему на Ubuntu. Оно охватывает вопросы, связанные с установкой, настройкой и использованием Ubuntu.

Вопрос и Ответ 29

Вопросы и Ответы


      29. Как преобразовать в текст содержимое переменных любого типа, причем, тип и их количество заранее не известно?

      Во первых, необходимо в функцию передавать открытый массив, чтобы обеспечить передачу любого количества разнотипных переменных. Во вторых, проверять тип каждой полученной переменной и преобразовывать ее в текстовую строку функцией, предназначенной конкретно для этого типа.

      В примере ниже приведен алгоритм преобразования наиболее часто используемых типов.

      Пример:

      ............

      {Функция преобразования разнотипных данных в строку}
      FUNCTION TForm1.AllToStr(CONST Value: ARRAY OF CONST): STRING;
      CONST BString: ARRAY [Boolean] OF STRING = ('False', 'True');
      VAR

        i: Integer;
        S: STRING;

      BEGIN

        Result := '';
        FOR i := Low(Value) TO High(Value) DO

          WITH TVarRec(Value[i]) DO BEGIN

            CASE VType OF

              vtInteger : S := IntToStr(VInteger);
              vtBoolean : S := BString[VBoolean];
              vtChar : S := VChar;
              vtExtended : S := FloatToStr(VExtended^);
              vtString : S := VString^;
              vtPointer : S := IntToHex(LongInt(VPointer), 8);
              vtPChar : S := StrPas(VPChar);
              vtObject : S := vObject.ClassName;
              vtClass : S := vClass.ClassName;

            END;
            AppendStr(Result, S);

          END;

      END;

      ............

      {Пример использование функции AllToStr}
      procedure TForm1.Button1Click(Sender: TObject);
      VAR a, b: Integer;
      begin

        a := 10; b := 20;
        Label1.Caption := AllToStr([ a, '+', b, '=', a+b, #9, a, '/', b, '=', a/b ]);

      end;

      ............


...предыдущая страница следующая...
оглавление



"Вопрос и Ответ 29"
Copyright © "В помощь Веб-Мастеру" (Alexander D. Belyaev) 2005-2024 .
При перепечатке любого материала видимая ссылка на источник "В помощь Веб-Мастеру" и все имена, ссылки авторов обязательны!
Время генерации страницы: 0.007