delphi.gif (306 バイト) コンソール関数


DelphiでもWin32コンソールアプリケーションを作ることができますが、DOS版のTurbo Pascalにあったようなテキストアトリビュート関数(文字列の色を変えたりするための関数)はありません。

これらの機能は、Win32 APIに用意されているためWin32 APIのコンソール関数を使うことにより実現できます。

toach.gif (917 バイト) Win32コンソール関数を使う準備

Win32コンソール関数を使うためには、コンソールハンドルを取得しなければなりません。Pascal標準手続きのWritelnなどは、標準出力ハンドルを使うので、このハンドルを取得すれば標準出力に対するテキストアトリビュートの設定ができることになります。標準出力ハンドルはCloseHandleによって閉じる必要はありません。


    hStdOut := GetStdHandle(STD_OUTPUT_HANDLE);
    if hStdOut = INVALID_HANDLE_VALUE then
        raise EAbort.Create('STD_OUTPUT_HANDLE is invalid.');

toach.gif (917 バイト) テキストアトリビュートの変更

テキストアトリビュートの変更は、SetConsoleTextAttribute関数で行います。この関数はフォアグランド色成分、バックグランド色成分、フォアグランド輝度、バックグランド輝度シンボルのORを指定します。例えば、フォアグランドが明るい赤で、バックグランドが暗い青のときは、

FOREGROUND_RED or FOREGROUND_INTENSITY or BACKGROUND_BLUE

とします。


    SetConsoleTextAttribute(
       hStdOut,
       FOREGROUND_RED or FOREGROUND_INTENSITY or BACKGROUND_BLUE);