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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0923
_"'.'`_修正版dirlist2モジュールがError12で落ちる。6未解決


_"'.'`_

リンク

2009/9/23(Wed) 18:24:57|NO.27919

HSP Wiki内の修正版dirlist2をincludeして使用しているのですが、
http://hspdev-wiki.net/?Module%2F%BD%A4%C0%B5%C8%C7dirlist2

例えば、以下のようなスクリプトですと、dirlist2.hsp内のline 30がError 12で落ちてしまいます。

#include "dirlist2.hsp" folder="C:\\test" chdir folder dirlist2h 1 dirlist2 f,"*.exe",3 sdim s,f+1 dirlist2r s
しかし、変数folderを"C:\Program Files"や"C:\\test\\hogehoge"等にすると、正常に動作します。
調べた結果、dirlist2のp3に"カレントディレクトリ以下のすべてのファイル一覧"である"1"
を指定しているのが原因らしいのです。

エラーで落ちないようにするには、どのように修正すればよいのでしょうか。



この記事に返信する


シモン

リンク

2009/9/23(Wed) 19:33:25|NO.27924

上記リンク先のモジュール30行目を見ると
chdir Target

そこで、エラー12が発生

HSPエラー12は、"ファイルが見つからないか無効な名前です"
http://www.fujidig.com/ohdl/doclib/error.htm

folder="C:\\test"

というにアクセスしたときに「ファイルが見つからないか無効な名前です」ですから、
"C:\test"というフォルダが無かったよとブログラムに言われているわけです。

テンプレ的な回避方法ですが


chdir "C:\\" ;カレントフォルダ移動、今いるフォルダに移動しようとするとエラーが出る sdim x, 256 ;xはダミー dirlist x, "test", 5 ;フォルダの有無のチェック if stat=0:mkdir "test"  ;0=存在しない、1=発見,フォルダが存在しなかったら作る

という流れを組みます。

ヘルプを読むか、以下のページを見ると理解が深まります。
http://lhsp.s206.xrea.com/command/dirlist.html



_"'.'`_

リンク

2009/9/23(Wed) 20:01:41|NO.27925

シモンさん、回答ありがとうございます。
しかし、C:\testフォルダは実際に存在し、
その証拠に、dirlistしても、statには0が帰ってきません。



シモン

リンク

2009/9/23(Wed) 21:47:51|NO.27930

"C:\test"が存在する状況では、
私のところでは上記モジュールと「_"'.'`_」さんのコードで
問題なく情報を取得できます。

"C:\test"が存在しない状況では、エラー12(当然ですが)

上記、チェック環境
OS:Windows2000SP4
HSP3.1、HSP3.2、スクリプトエディタ、実行ファイルともに検証

すぐチェックできる環境がWindows2000SP4なので、
WindowsXP環境以降の方ヘルプお願いします。



ANTARES

リンク

2009/9/24(Thu) 01:10:47|NO.27937

 末端フォルダが深すぎるのでは?
 デバッグウィンドウで、エラーが出たときの「Target@m0」を調べてみてください。
256バイトを超えていれば、そのせいです。



_"'.'`_

リンク

2009/9/24(Thu) 16:16:43|NO.27949

ANTARESさん、回答ありがとうございます。
残念ながら、デバッグウインドウで該当するものは見つかりませんでした。
ただし、"note@m0"は
バッファサイズ:4096
(内容1194bytesの一部を表示しています)
との事です。
又、同じく"newline@m0"がバッファサイズ4096でした。



ANTARES

リンク

2009/9/25(Fri) 00:17:48|NO.27969

>残念ながら、デバッグウインドウで該当するものは見つかりませんでした。

以下の状況で、それは考えられません。

>例えば、以下のようなスクリプトですと、dirlist2.hsp内の
>line 30がError 12で落ちてしまいます。


 しかし、要点はそこではありません。
 末端フォルダのフルパスが256バイトを超えているかどうかです。
超えているなら、Windowsの仕様なんで、
何とか超えないように工夫するしかありません。



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