プロンプトによる分岐No.01239
tacyuki さん 98/10/19 19:48
 
はじめまして、秀termを使用させていただいています。

いきなり質問なのですが、
getlineによって、向こうから送信されてくる文字列を取得し、その内容によって分
岐処理を行うようなスクリプト等を書いてみたのですが、ターミナルには文字が出力
されているにも関わらず、getlineでの文字列の取得ができるときとできないときが
あります。また、場合によってはgetlineを2つ並べることにより、2つめのgetline
で取得ができるときがあります。このような現象にはどのような原因が考えられるで
しょうか?

現在、煮詰まってしまっているので、どんな些細なことでも教えていただけるとあり
がたいです。


[ ]
RE:01239 プロンプトによる分岐No.01240
範子 さん 98/10/20 06:58
 
sub:getlineの仕様

 プロンプトの分岐と聞いてまず思い浮かぶのは、
 getlineは行ごとに取得するので、改行コードが送られてこないと
 待ち続けます。
  たとえば

|  利用する会議室番号を入力してください−−−>

   という場合、何か入れるまで改行はこないので取得できません。
 でも、この場合は止まってしまいますので違うみたいですね。


 その部分のコードを抜き出して具体的に質問してくださるとやはり
回答しやすいと思います。


 ちなみに

| getline #a

と文字列を待ち受けている最中に、ファンクションキー割り当てているなどの
別のスクリプト

|FunctionF1:
|      #b = "temp"
|return

を実行すると、getlineで受信した行の内容は#aではなく、直前に操作した
変数#bに入ってしまいます。(スタックに積んでいくから)
 そんなわけで、この例で言うFunctionF1:のようなものがあれば、それも
関連するかもしれません。


*ちなみに私の対策は、getlineの引数の変数名を#lineで統一して(必要が
あれば、その後で好きな名前の変数に代入する)、途中実行するスクリプト
の末尾に
#line = #line
という1行を入れます。
 こうすると、直前に操作した#lineにgetlineの結果が必ず入るようになり
ます。

[ ]
RE:01239 プロンプトによる分岐No.01243
秀まるお さん 98/10/21 10:28
 
 getlineを使うよりも、wait文かswitch文を使った方が楽かと思います。


[ ]