出力とログ

コンソール出力

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 定数

一つの文字列内に手動で改行を挿入したい場合は、Free Pascal標準ライブラリが提供する LineEnding 定数を使用します。Castle Game Engineには更に短い NL 定数も用意されています。

Pascalの文字列はバックスラッシュによるエスケープ文字を解釈しません\n は無効)。以下の記述は誤った例です:

// 誤り:\nは改行として認識されない
WriteLn('One line.\nSecond line.');Code language: JavaScript (javascript)

正しい記述方法は2種類あります:

// 改行定数を連結
WriteLn('One line.' + LineEnding + 'Second line.');

// WriteLnを2回分けて記述(簡潔で推奨)
WriteLn('One line.');
WriteLn('Second line.');Code language: JavaScript (javascript)

注意事項

WriteLnはコンソールアプリ専用

Write/WriteLnコンソールアプリケーションでのみ有効です。メインソースファイルの先頭にコンパイラディレクティブを記載する必要があります:

{$apptype CONSOLE}Code language: PHP (php)

GUIモードにしてはいけません:

{$apptype GUI} // GUIアプリでWriteLnを直接呼び出すとエラーが発生Code language: PHP (php)
  • Unix/Linux/macOS:一部環境ではGUIアプリから出力してもクラッシュしないが、出力内容は意味がありません;
  • Windows:GUIグラフィックアプリでWriteLnを実行すると実行時エラーが発生します。

Castle Game Engine ログ出力規約

Castle Game Engineで開発する際は、WriteLnを直接デバッグ出力に使用してはなりません。専用のログ出力APIを利用してください:

  • WriteLnLog:通常デバッグログ
  • WriteLnWarning:警告ログ

エンジンはログを自動的に適切な出力先に分配します:

  1. Unix系OS:標準コンソール出力 stdout;
  2. Windows GUIゲームアプリ:ローカルログファイルへ出力;
  3. Androidプラットフォーム:Androidシステムログに統合、adb logcat で確認可能。

用語対照表

英語原文Pascal用語解説
Write / WriteLn改行なし出力 / 改行付き出力
LineEndingシステム改行定数(クロスプラットフォーム対応)
NLCastle簡略改行定数
padding数値桁埋め・桁揃え幅
precision浮動小数点数小数精度
{$apptype CONSOLE}コンソールアプリコンパイラ指示子
{$apptype GUI}GUIアプリコンパイラ指示子
adb logcatAndroidログ確認ツール
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を2回分けて記述(簡潔で推奨)
  WriteLn('One line.');
  WriteLn('Second line.');

end.Code language: PHP (php)

上記のコンパイラ指示子を記述する必要があります

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です