Вывод в консоль
Write / WriteLn
Для вывода строк в Pascal используйте встроенные процедуры Write или WriteLn; WriteLn автоматически добавляет перевод строки в конец текста.
Это очень гибкая встроенная процедура Pascal: она принимает любое количество аргументов любого типа данных, автоматически преобразует значения в строки при выводе и поддерживает специальный синтаксис форматирования для управления шириной заполнения чисел и точностью дробных чисел.
WriteLn('Hello world!');
// Вывод целочисленного выражения
WriteLn('You can output an integer: ', 3 * 4);
// Выравнивание целого числа по правому краю, общая ширина 10 символов
WriteLn('You can pad an integer: ', 666:10);
// Формат дробного числа: общая ширина 1, 4 знака после запятой
WriteLn('You can output a float: ', Pi:1:4);Code language: JavaScript (javascript)
Ручной перевод строк
Константа LineEnding
Если нужно вручную вставить перевод строки внутри одной строки, используйте константу LineEnding из стандартной библиотеки Free Pascal; в Castle Game Engine есть более короткая константа-псевдоним NL.
Строки Pascal не обрабатывают escape-последовательности с обратной косой чертой (\n не работает). Ниже приведён неверный пример:
// Ошибка: \n не распознаётся как перевод строки
WriteLn('One line.\nSecond line.');Code language: JavaScript (javascript)
Два правильных варианта записи:
// Конкатенация константы перевода строки
WriteLn('One line.' + LineEnding + 'Second line.');
// Два отдельных вызова WriteLn (чище и рекомендуется)
WriteLn('One line.');
WriteLn('Second line.');Code language: JavaScript (javascript)
Важные замечания
WriteLn работает только в консольных приложениях
Write/WriteLn действуют только в консольных приложениях. В начале основного файла программы обязательно указывайте директиву компилятора:
{$apptype CONSOLE}Code language: PHP (php)
Не используйте режим GUI:
{$apptype GUI} // Прямой вызов WriteLn в GUI-программах вызовет ошибкуCode language: PHP (php)
- Unix/Linux/macOS: в некоторых случаях GUI-программы не падают при выводе, но вывод не несёт смысла;
- Windows: прямой запуск WriteLn в графических GUI-приложениях вызывает ошибку во время выполнения.
Стандарты логирования Castle Game Engine
При разработке на Castle Game Engine запрещено использовать WriteLn напрямую для отладочных сообщений. Используйте специализированные функции логирования:
WriteLnLog: обычные отладочные логиWriteLnWarning: предупреждающие логи
Движок автоматически перенаправляет логи в соответствующие выходы:
- Системы Unix: стандартный консольный вывод stdout;
- Игры с GUI на Windows: запись в локальный файл логов;
- Платформа Android: интеграция с системными логами Android, просмотр через
adb logcat.
Таблица соответствия терминов
| Оригинальный английский термин | Значение на Pascal |
|---|---|
| Write / WriteLn | Вывод без перевода строки / Вывод с переводом строки |
| LineEnding | Системная константа перевода строки (кроссплатформенная) |
| NL | Сокращённая константа перевода строки Castle |
| padding | Заполнение числовых полей, ширина выравнивания |
| precision | Точность дробной части для чисел с плавающей точкой |
| {$apptype CONSOLE} | Директива компилятора для консольных приложений |
| {$apptype GUI} | Директива компилятора для графических приложений |
| adb logcat | Утилита для просмотра логов Android |
| standard output | Стандартный поток вывода (stdout) |
Полный пример из раздела
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
{$R+}
begin
WriteLn('Hello world!');
// Вывод целочисленного выражения
WriteLn('You can output an integer: ', 3 * 4);
// Выравнивание целого числа по правому краю, общая ширина 10 символов
WriteLn('You can pad an integer: ', 666:10);
// Формат дробного числа: общая ширина 1, 4 знака после запятой
WriteLn('You can output a float: ', Pi:1:4);
// Ошибка: \n не распознаётся как перевод строки
// WriteLn('One line.\nSecond line.');
// Конкатенация константы перевода строки
WriteLn('One line.' + LineEnding + 'Second line.');
// Два отдельных вызова WriteLn (чище и рекомендуется)
WriteLn('One line.');
WriteLn('Second line.');
end.Code language: PHP (php)


Обязательно добавьте указанную директиву компилятора для корректной работы