blochの日記

自虐ネタ以外のぐちは書かないようにしましょう

一文字キー入力?

Delphiには意外と無い。特定のキーが押されたかどうかはGetKeyStateでわかる。戻り値の符号(本当は最上位ビット)を見れば良い。GetKeyState(VK_SHIFT)とか、GetKeyState(ord('D'))とすれば良い。
CTRL+Dが押されたら測定終了にするには、

repeat
  measure;
until((GetKeyState(VK_CONTROL)<0)and(GetKeyState(ord('D'))<0));

で良いのだが、何回か押したり、他のキーに触ったりしていると、それがみんなキーバッファに残ってしまい、プログラム終了後に吐き出されて来る。キーバッファクリヤのコマンドも検索すると見つかるのだが、かなり難解で解読出来なかった。
データファイルに対する書き込み直後に毎回closeしており、CTRL+Cで強制終了しても大丈夫なので、とくに終了チェックをかけなくとも良いのだが、、。さて。