Как преобразовать в текст содержимое переменных любого типа, причем, тип и их количество заранее не известно?
Во-первых, необходимо в функцию передавать открытый массив, чтобы обеспечить передачу любого количества разнотипных переменных.
Во-вторых, проверять тип каждой полученной переменной и преобразовывать ее в текстовую строку функцией, предназначенной конкретно для этого типа.
В примере ниже приведен алгоритм преобразования наиболее часто используемых типов.
Пример:
{Функция преобразования разнотипных данных в строку} 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 ]); end;