sdim ln, 4096 ; #たぶん一回の受信物 sdim buf, 32000 ; #たぶん送受信物 sdim linin, 4096, 32 ; #lnを分割したもの sdim out, 4096, 1 ; #送信物 pipeexec buf, "***CUI.exe", 0 ; # if stat : dialog "実行できませんでした" : end repeat wait 1 ; # pipeget ln ; # if stat = 0 : break ; #実行終了ならループを抜ける (lnもあるかどうかも見なきゃダメかも?)。 if strlen(ln) > 0 { ; #受信物があれば受信 count2 = split_n( linin , ln ) ; #split_nは split ln, "\n", linin とほぼ同じ repeat count2 ; # bin linin(cnt) ; # loop; ; # ln = "" ; # } if strlen(out) > 0 { ; #送信物があれば送信 repeat strlen(out) ; # pipeput peek(out, cnt) ; # loop out = "" } loop mes "実行完了..." end
一週間ほどですが、HSPをダウンロードしてこの記述の中でHSPの動作確認をおこなってきました。
わけもわからず作った物ですので、正しく動作してるのかどうかがよく分かりません。
「表面上は」正しく動作していて、この一週間に問題はありません。
1:waitやstopは停止ではなく、一定時間GUIのイベント監視用のループに処理を返すと言う解釈でいいですか?
スレッドとかそうゆうのではないですよね?
2:bufとlnの具体的な違いが分かりません。
bufが受け取った全ての内容で、lnが一回に受け取る内容なのかな、と思っていましたが、どうもそうではないふしがあるようです。
lnはpipegetしても消えずに増えていくです。
3:lnが、改行やEOFを受け取ってないくせにガンガン代入されてるくさいです。
そうゆう時はスルーするよう、私が記述するべきなのでしょうか?
変な所でデータが切れないか不安です。
4:処理の中でlnを削除してますが、別に大丈夫ですよね?
5:これが最大の問題なのですが、pipegetとpipeputが全然対象パイプを指定していないように思えます。
パイプを二つ開きたいのですが、どうすれば…?