一括表示

  スクリプト 投稿者:  



こんにちは。

以下のプログラムなんですが、

無限ループをESCキーで強制的に抜けるんじゃなくて、
キー入力をスクリプトで検出して抜けたいんですが、
何か良い方法はないでしょうか。

よろしくお願いします。」



// 座標値書き出しサンプルプログラム
// 2008/12/24 NabeTech

Program PosToCSV;
var
X, Y : double;
Begin
InitEditor('Position.CSV');

Message('取得する座標を入力して下さい。');
While GetPos(X, Y) = True Do
Begin
Writeln(FloatToStr(X)+','+FloatToStr(Y));
End;
End.

2011/05/17(Tue) 18:19:35  [No.3074]


  Re: スクリプト 投稿者:管理人  

こんにちは。

> 無限ループをESCキーで強制的に抜けるんじゃなくて、
> キー入力をスクリプトで検出して抜けたいんですが、
> 何か良い方法はないでしょうか。

GetPos()を呼ぶと、GetPos()の内部で待機状態(無限ループ)に入ります。
と言う事は、GetPos()の仕様(ESCキーでの終了)変更をしない限り不可能なんです。
やるとすれば、MsgBox()にて毎回問い合わせをするかです。

Message('取得する座標を入力して下さい。');
While GetPos(X, Y) = True Do
Begin
Writeln(FloatToStr(X)+','+FloatToStr(Y));
if MsgBox('続けますか?')<>true then Exit; // 追加
End;

2011/05/18(Wed) 05:26:48  [No.3075]


  Re: スクリプト 投稿者:  

こんにちは。

すみません、うまく意味が伝わらなかったようです。

getpos()を改造してほしいわけではなくて、

GETCHAR()のような関数がないかな・・とか。

キー入力を受け付けてくれるものがないかなと

そういった感じのつもりだったのです。

2011/05/18(Wed) 08:07:02  [No.3076]


  Re: スクリプト 投稿者:管理人  

> GETCHAR()のような関数がないかな・・とか。

スクリプトからGetPos()を呼んだ時点で、制御はGetPos()に奪われてしまうんです。
そのため、GetChar()関数を置いたとしても、捕捉は出来ません。
なぜなら、スクリプトはGetPos()が終わるまでに、意識が無いからです。

2011/05/18(Wed) 10:29:18  [No.3077]


  Re: スクリプト 投稿者:  

なんとなくわかりました。

たぶん。

ありがとうございました。

2011/05/18(Wed) 12:23:54  [No.3078]