HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0723
YSRなぜか4番目のファイルを読み込もうとする度にシステムエラーが出てくるのですが……6解決


YSR

リンク

2013/7/23(Tue) 19:21:22|NO.55836

・要するに、exeと同階層のtxtファイル一覧を一旦読み込んで表示し、
 「start」ボタンを押せば1ファイルづつnotegetでファイル名を切り出し
 コマンドラインツールに渡し、実行が終了したことを確認して
 次のファイルを渡す、といったものです。
・実行すると、3ファイル目までは上手くいくのですが、
 4ファイル目(cnt = 3の時)になぜか毎回「システムエラー」の
 エラーダイアログが出てきます。
・処理終了を確認してから次のファイル名を引数に渡しているので、
 どこが悪いのか皆目検討がつきません。
・ソースコード:
(「A_VS11.exe」か「A_VS10.exe」が件の処理用実行ファイル。
ファイル名を引数に渡すと、cinで数字を入力するよう求めてくる。
入力して改行コードを送ると同階層にファイル出力を行い、出力し切ると終了する仕組み)

#include "hspext.as" #packopt name "batch_split" Splits = 100 sdim FileList, 1000 * 1000, 2 dirlist FileList(0), "*.txt", 1 if(stat != 0){ FileSum = stat notesel FileList(0) count = 0 repeat FileSum noteget GetLine, cnt if(instr(GetLine, , "ans") == -1){ FileList(1) += GetLine + "\n" count++ } loop if(count == 0) :end } screen 0,500, 200 title "ファイル数:" + count input Splits pos 74,0 :objsize 426, 215 :listbox Listpos, 0, FileList(1) pos 0, 34 :objsize 64,24 button "delete", *del button "start", *start stop *del notesel FileList(1) notedel Listpos count-- objprm 1, FileList(1) title "ファイル数:" + count stop *start OS = sysinfo(0) OSVer = double(strmid(OS, -1, 3)) if((instr(OS,,"9X") != -1) | (OSVer < 6.1)) :SoftFlg = 10 :else :SoftFlg = 11 repeat count title "状況:"+(cnt+1)+"/"+count notesel FileList(1) noteget FileName, cnt pipeexec tmp, "A_VS"+SoftFlg+".exe " + FileName, 0 while pipeget ln if(stat == 0) : _break if(stat == 1){ StrSplits = str(Splits) for k, 0, strlen(StrSplits) pipeput peek(StrSplits, k) wait 10 next pipeput $0D //CR wait 10 pipeput $0A //LF wait 10 } wait 10 wend wait 100 loop end

 解決策を教えて下さい。
 ……最悪、バッチファイルを自動生成するだけのアプリに逃げるかもしれませんが。



この記事に返信する


YSR

リンク

2013/7/23(Tue) 19:23:32|NO.55837

補足。エラー発生場所は47行目、
「noteget FileName, cnt」のところです。
noteselしてある変数の中身に異常は無いのになぜエラーを吐かれるのか……?



 

リンク

2013/7/23(Tue) 19:55:40|NO.55839

noteunselっていう新しい命令と規格が影響しているのかな。



GrapeColor(DION)

リンク

2013/7/24(Wed) 09:13:03|NO.55851

>> さん
noteunselは新しい命令ではなく、前からありますよ?
とりあえず、終了を確認したら1〜2秒くらい待ってみるのはどうでしょう。



GrapeColor(DION)

リンク

2013/7/24(Wed) 09:16:49|NO.55852

連投すいません。
私の頭が悪いだけかもしれませんが、説明文を読んでもイマイチどういうプログラムなのか理解できませんでした。
実行環境が再現できるファイルをまとめて圧縮ファイルにしていただくか、より詳しく説明して下さると助かります。



YSR

リンク

2013/7/24(Wed) 18:09:36|NO.55863

>終了を確認したら1〜2秒くらい待ってみる
「wait 100」で待っています。
もうちょっと増やすべきなんですかね……?
でも、このままで実行すると、
「タイトルバーのカウントが途中から急に速くなって終了。
 そして、呼び出ししたソフトがエラー落ちしたとの報告ダイアログが出てくる」
という感じなんで、ウェイトを変えただけじゃ解決しないかもしれません。
>まとめて圧縮ファイルに
あいにく再配布したくない(呼び出し側のソフトを)ものでして……

一旦ここで質問は閉じさせてもらいます。返信有難う御座いました。



なまえをかくと

リンク

2013/7/25(Thu) 02:06:49|NO.55897

回答者としては、
簡単に「デバッグに必要なファイル一式圧縮して頂戴」という提案は軽率で、質問者の質問意欲を低下させる原因になりかねません。

質問者としては、
YSRさんは”初心者”ではないようですから、厳しめに回答してみます。

エラーの発生条件を特定できていないのが問題ではないでしょうか?
(特定できないから、特定してほしいという要望でしたか?)

デバッグをどの手順で行いましたか?
デバッグをどの程度のレベルで行いましたか?
エラーの原因を大別しましたか?
・HSPの仕様に問題がある
・ソースコードに問題がある
・データに問題がある
・他プログラム(レスポンス)に問題がある
など。

エラーが現れたソースコードと睨めっこしてもエラーの発生条件は特定できませんよ?
その程度はお分かりですよね。

より簡単に説明すると、
pipeexec関連の処理を止めればエラーは止まるんでしょうか?
yes->では原因はおそらくpipeexec関連の処理でしょう、と大別できます。
no->では原因はおそらくpipeexec関連の処理とは関係のないところでしょう。
つまり、
・HSPの仕様に問題がある
・ソースコードに問題がある
・データに問題がある
に絞れました。

ご自分である程度デバッグして範囲が絞れたのであるならば、
余計なコードを載せるのは相手に二度手間を踏ませることになると思わないでしょうか?

え?デバッグしていない?
論外ですね。
自分のプログラムのコーディングに集中してください。



ONION software Copyright 1997-2023(c) All rights reserved.