Conversión de números a cadena

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
  1. Extremadamente flexible; las funciones separadas cubren la mayoría de tipos: enteros, flotantes, fechas, etc.;
  2. 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

  1. 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;
  2. No hay lógica oculta del compilador. Al declarar funciones personalizadas con parámetros variables array of const se puede reutilizar esta lógica de formateo y reenviar los parámetros a Format para 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *