Если вы не хотите выводить данные напрямую, а нужно объединить любое количество переменных в одну строку, в Pascal существует три основных способа реализации:
Конкатенация через специализированные функции преобразования
***ToStr + объединение строк оператором +
Отдельно преобразуйте каждый тип данных с помощью специализированных функций, затем соедините строки оператором +:
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)
Часто используемые вспомогательные функции (все содержатся в модуле SysUtils):
- Число в строку:
IntToStr,FloatToStr,FormatFloat(настраиваемый формат для дробных чисел) - Строка обратно в число:
StrToInt,StrToIntDef,StrToFloat
Полностью рабочий пример
{$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)

Преимущества
- Очень гибкий подход; отдельные функции покрывают большинство типов: целые числа, дробные, даты и т.д.;
- Полный набор обратных преобразований, удобно при разборе пользовательских строк ввода.
Недостатки
При большом количестве переменных многослойная конкатенация через + делает код громоздким и трудным для чтения.
Функция форматирования Format
Format (аналог sprintf из языка C)
Базовый синтаксис
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: заполнитель для целого числа;%.4f: дробное число с четырьмя знаками после запятой;%s: заполнитель для строки- Второй аргумент — это константный массив, последовательно заполняющий все заполнители
Полный пример
{$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)

Преимущества
- Шаблон формата отделен от данных, структура кода чистая; при многоязычной локализации программы достаточно изменить строку шаблона, список переменных трогать не нужно;
- Нет скрытой логики компилятора. При объявлении собственных функций с переменными аргументами
array of constможно повторно использовать логику форматирования и передавать параметры на обработку функцииFormat.
Недостатки
Компилятор не проверяет на соответствие типов переменных и заполнителей на этапе сборки; несовпадение типов вызывает исключение преобразования EConvertError во время выполнения (не приводит к сбоям доступа к памяти).
WriteStr
Сохраняет вывод функции Write в строковую переменную
Назначение: работает почти как Write/WriteLn, но не выводит текст в консоль, а сохраняет результат в первую целевую строковую переменную:
var S: string;
begin
WriteStr(S, 'Pi value: ', Pi:1:4);
end;Code language: JavaScript (javascript)
Полный пример
{$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)
