Si no quieres imprimir directamente, sino concatenar cualquier cantidad de variables en una cadena completa, Pascal ofrece tres métodos de implementación principales:
Concatenación mediante funciones de conversión dedicadas
***ToStr + concatenación con el operador cadena +
Convierte tipos individuales por separado usando funciones de conversión especializadas y luego une las cadenas con el operador +:
uses SysUtils;
var
MyInt: Integer;
MyStr: string;
begin
MyInt := 123;
MyStr := 'My int number is ' + IntToStr(MyInt) + ', and the value of Pi is ' + FloatToStr(Pi);
end;Lenguaje del código: JavaScript (javascript)
Funciones auxiliares habituales (todas contenidas en la unidad SysUtils):
- Número a cadena:
IntToStr,FloatToStr,FormatFloat(formato de punto flotante personalizado) - Cadena a valor numérico:
StrToInt,StrToIntDef,StrToFloat
Ejemplo completo ejecutable
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
uses SysUtils;
var
MyInt: Integer;
MyStr: string;
begin
MyInt := 180;
MyStr := 'My int number is ' + IntToStr(MyInt) + ', and the value of Pi is ' + FloatToStr(Pi);
WriteLn(MyStr);
end.Lenguaje del código: PHP (php)

Ventajas
- Extremadamente flexible; las funciones separadas cubren la mayoría de tipos: enteros, flotantes, fechas, etc.;
- Cuenta con un conjunto completo de funciones de conversión inversa, muy prácticas al analizar cadenas introducidas por el usuario.
Desventajas
Cuando hay muchas variables, el código con múltiples operadores + anidados resulta extenso y difícil de leer.
Función de formateo Format
Format (similar a sprintf del lenguaje C)
Sintaxis básica
uses SysUtils;
var
Res: string;
MyInt: Integer;
MyFloat: Double;
MyString: string;
begin
Res := Format('%d %.4f %s', [MyInt, MyFloat, MyString]);
end;Lenguaje del código: JavaScript (javascript)
%d: marcador de posición para entero;%.4f: número flotante con cuatro dígitos decimales;%s: marcador de posición para cadena- El segundo parámetro es un array constante que rellena los marcadores de posición en orden secuencial
Ejemplo completo
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
uses SysUtils;
var
Res: string;
MyInt: Integer;
MyFloat: Double;
MyString: string;
begin
// set value
MyInt := 169;
MyFloat := 0.618;
MyString := 'foxdevelop.com';
Res := Format('%d %.4f %s', [MyInt, MyFloat, MyString]);
WriteLn(Res);
end.Lenguaje del código: PHP (php)

Ventajas
- La plantilla de formato está separada de los datos, generando una estructura limpia; al implementar traducciones multilingües en software solo hay que modificar la cadena plantilla sin alterar la lista de variables;
- No hay lógica oculta del compilador. Al declarar funciones personalizadas con parámetros variables
array of constse puede reutilizar esta lógica de formateo y reenviar los parámetros aFormatpara su procesamiento nativo.
Desventajas
El compilador no valida en tiempo de compilación si los marcadores coinciden con los tipos de variable; si los tipos no coinciden se lanza una excepción de conversión EConvertError en tiempo de ejecución (no provoca fallos de acceso a memoria).
WriteStr
Almacena la salida de Write en una variable de cadena
Propósito: su comportamiento es casi idéntico a Write/WriteLn, pero en lugar de imprimir en consola guarda el resultado en la primera variable cadena objetivo:
var S: string;
begin
WriteStr(S, 'Pi value: ', Pi:1:4);
end;Lenguaje del código: JavaScript (javascript)
Ejemplo completo
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
uses SysUtils;
var S: string;
begin
WriteStr(S, 'Pi value: ', Pi:1:4);
WriteLn(S);
end.Lenguaje del código: PHP (php)

Conversión de números a cadena