Вопросы и Ответы
29. Как преобразовать в текст содержимое переменных любого типа, причем, тип и их количество заранее не известно?
Во первых, необходимо в функцию передавать открытый массив, чтобы обеспечить передачу любого количества разнотипных переменных. Во вторых, проверять тип каждой полученной переменной и преобразовывать ее в текстовую строку функцией, предназначенной конкретно для этого типа.
В примере ниже приведен алгоритм преобразования наиболее часто используемых типов.
Пример:
............
{Функция
преобразования разнотипных данных в строку} i:
Integer; BEGIN Result
:= ''; WITH
TVarRec(Value[i]) DO BEGIN CASE
VType OF vtInteger
: S := IntToStr(VInteger); END; END; END; ............ {Пример
использование функции AllToStr} a
:= 10; b := 20; end; ............
FUNCTION TForm1.AllToStr(CONST Value: ARRAY OF CONST):
STRING;
CONST BString: ARRAY [Boolean] OF STRING = ('False',
'True');
VAR
S: STRING;
FOR i := Low(Value) TO High(Value) DO
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;
AppendStr(Result, S);
procedure TForm1.Button1Click(Sender: TObject);
VAR a, b: Integer;
begin
Label1.Caption := AllToStr([ a, '+', b, '=', a+b, #9, a,
'/', b, '=', a/b ]);
...предыдущая страница следующая...
оглавление