コンソール関数
DelphiでもWin32コンソールアプリケーションを作ることができますが、DOS版のTurbo Pascalにあったようなテキストアトリビュート関数(文字列の色を変えたりするための関数)はありません。
これらの機能は、Win32 APIに用意されているためWin32 APIのコンソール関数を使うことにより実現できます。
Win32コンソール関数を使う準備
Win32コンソール関数を使うためには、コンソールハンドルを取得しなければなりません。Pascal標準手続きのWritelnなどは、標準出力ハンドルを使うので、このハンドルを取得すれば標準出力に対するテキストアトリビュートの設定ができることになります。標準出力ハンドルはCloseHandleによって閉じる必要はありません。
例
hStdOut := GetStdHandle(STD_OUTPUT_HANDLE);
if hStdOut = INVALID_HANDLE_VALUE then
raise EAbort.Create('STD_OUTPUT_HANDLE is invalid.');
テキストアトリビュートの変更
テキストアトリビュートの変更は、SetConsoleTextAttribute関数で行います。この関数はフォアグランド色成分、バックグランド色成分、フォアグランド輝度、バックグランド輝度シンボルのORを指定します。例えば、フォアグランドが明るい赤で、バックグランドが暗い青のときは、
FOREGROUND_RED or FOREGROUND_INTENSITY or BACKGROUND_BLUE
とします。
例
SetConsoleTextAttribute(
hStdOut,
FOREGROUND_RED or FOREGROUND_INTENSITY or BACKGROUND_BLUE);