Se você não quiser imprimir diretamente e sim concatenar uma quantidade qualquer de variáveis em uma string completa, o Pascal disponibiliza três formas principais de implementação:
Concatenação com funções de conversão dedicadas
***ToStr + concatenação de strings com o operador +
Converta cada tipo de dado individualmente usando funções de conversão específicas e depois una as strings com o 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;Code language: JavaScript (javascript)
Funções auxiliares comuns (todas presentes na unidade SysUtils):
- Número para string:
IntToStr,FloatToStr,FormatFloat(formato de ponto flutuante personalizado) - String de volta para valor numérico:
StrToInt,StrToIntDef,StrToFloat
Exemplo totalmente executável
{$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.Code language: PHP (php)

Vantagens
- Extremamente flexível; funções segmentadas cobrem a maioria dos tipos: inteiros, pontos flutuantes, datas e outros;
- Possui um conjunto completo de funções de conversão inversa, facilitando a análise de strings digitadas pelo usuário.
Desvantagens
Quando existem muitas variáveis, a concatenação com vários operadores + deixa o código extenso e de difícil leitura.
Função de formatação Format
Format (similar ao sprintf da linguagem C)
Sintaxe básica
uses SysUtils;
var
Res: string;
MyInt: Integer;
MyFloat: Double;
MyString: string;
begin
Res := Format('%d %.4f %s', [MyInt, MyFloat, MyString]);
end;Code language: JavaScript (javascript)
%d: marcador de posição para inteiro;%.4f: número de ponto flutuante com quatro casas decimais;%s: marcador de posição para string- O segundo parâmetro é um array constante que preenche os marcadores de posição em sequência
Exemplo 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.Code language: PHP (php)

Vantagens
- O template de formatação é separado dos dados, mantendo a estrutura organizada; para tradução multilíngue de software basta alterar a string do template sem modificar a lista de variáveis;
- Não há lógica oculta do compilador. Ao declarar funções personalizadas com parâmetros variáveis
array of constvocê reutiliza essa lógica de formatação e encaminha os parâmetros para o processamento nativo da funçãoFormat.
Desvantagens
O compilador não verifica em tempo de compilação se os marcadores correspondem aos tipos das variáveis; tipos incompatíveis geram uma exceção de conversão EConvertError em tempo de execução (não causa falhas de acesso à memória).
WriteStr
Armazena a saída do Write em uma variável string
Finalidade: funciona quase igual a Write/WriteLn, mas ao invés de imprimir no console, salva o resultado na primeira variável string alvo:
var S: string;
begin
WriteStr(S, 'Pi value: ', Pi:1:4);
end;Code language: JavaScript (javascript)
Exemplo 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.Code language: PHP (php)
