Форум веб-мастеров  /  Статьи веб-мастера  /  WHOIS-сервис  /  Услуги веб-мастера  /  RSS 
Разделы сайта




Полезные ссылки

wm-help.net -> Электронная библиотека -> Delphi -> Вопросы и Ответы по Delphi -> Вопрос и Ответ 29

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

Вопрос и Ответ 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;

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


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

[ Вверх ]

Rambler's Top100

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