2

Free-Pascalでは、一連のスレッド(TThread)でほとんどの作業を実行するクロスプラットフォームコンソールプログラムを作成します。

メインプログラムは、時々いくつかのユーザーコマンドを受け取り、それらを実行するために(そしてプログラム全体を実行し続けるために)のみ使用されます。

プログラムのメインループとしてのこのループは、CPUを使用せずにWindowsとLinuxの両方で完全に機能します。

repeat
  Write('> ');
  ReadLn(s);
  // execute command
until s='exit';

しかし、メインプログラムにいくつかの作業を実行するように命令するスレッドが必要です。これは、別のスレッドからのReadLnを停止して続行し、コマンドフラグを確認する方法が必要であることを意味します。どういうわけかEnterキーを押してReadLnをだまして終了させることができれば、それで問題ありません。

ユーザーの文字列またはキーの押下をリッスンし、同時に他のスレッドからコマンドを実行できるクロスプラットフォームのメインループを作成する他の方法はありますか?

4

1 に答える 1

2

はい、ユニットキーボードを使用してください。この抽象化されたキーボードサポートにより、イベント(キー)をのぞくことができます。これは、スレッドにブール値を設定すると、ループを終了する可能性があることを意味します。

標準のFPCインストールに付属する(rtl)マニュアルおよびテキストコンソールゲーム(fpctris、samegame)のキーボードユニットを参照してください。

于 2013-03-13T20:33:48.010 に答える