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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1208
海のくまさんexist命令が半角スペースを含むパスを認識しない6解決


海のくまさん

リンク

2007/12/8(Sat) 20:42:59|NO.12718

exist に半角スペースを含むパスを渡すと strsize = -1 が渡されます。
dir_cur (カレントディレクトリ)に半角スペースが入っていてもいなくても
処理されるので、exist 命令に特有の現象だと思われます。
これを回避するにはどうしたらいいですか?
よろしくお願いします。

HSPのバージョンは3.1で確認しました。


exist "C:\\Program Files\\hsp31\\hsp3.exe" dialog "strsize = "+strsize



この記事に返信する


海のくまさん

リンク

2007/12/8(Sat) 20:52:33|NO.12719

すいません。上記のスクリプトでは再現できませんでした。


dir_name = "1. test" mkdir dir_name exist dir_name dialog "strsize = "+ strsize



begriff -いくす-

リンク

2007/12/8(Sat) 21:22:35|NO.12721

どうも begriff -いくす- です。

えとですね、多分そのようなファイルがないだけかと。
拡張子はアルファベットと数字の組み合せなのでスペースはつかないのでは?
NO.12719のスプりクトだと"1. test"というディレクトリはできますが、
"1. test"というファイルはできません。そのためファイルがないことを示す
strsize=-1が渡されるのかと



tks

リンク

2007/12/8(Sat) 21:30:02|NO.12722

existはフォルダは対象ではないので、そのスクリプトですと
半角スペースがあるかないかにかかわらず-1を返します。
実際にエラーが起きる状況を提示されたほうが解決の近道かと。

NO.12646のNO.12673あたりが参考になるかも。



Kpan

リンク

2007/12/8(Sat) 22:53:58|NO.12723

existはファイルの存在をチェックするための命令であって、
フォルダは無理です。dirlsit命令を使ってください。
http://lhsp.s206.xrea.com/hsp_folder.html



海のくまさん

リンク

2007/12/9(Sun) 00:40:31|NO.12725

すいません。確かに exist はフォルダではなくファイルを見つけるんでしたね。
tksさんの言うとおり、実際に起こったことを書きます。

あるフォルダに入れていたファイルを読みだすようにしていたんですが、
そのフォルダ名を変えたとたんにファイルを読みだすことができなくなりました。
そのファイルのパスははexeにDnDすることで得られるコマンドラインから得ていました。

エディタ上ではコマンドラインに相対パスとして、そのファイル名だけを書いていました。
なので、エディタ上ではファイルを正常に開くことができました。

いろいろ調べてみると、DnDで渡されたファイルが exist で -1 を返していることが
わかりました。なので、今回このような質問をさせていただきました。

その時、変更したフォルダ名には「. 」(半角ドットと半角スペースの連続)を含んでいました。
そこで、この半角スペースを消したら、ちゃんとDnDされたファイルを認識するように
なりました。


これからは自分のエラーも再現できないようなスクリプトを書かないよう、気をつけます。。。



海のくまさん

リンク

2007/12/9(Sun) 01:08:11|NO.12726

自己解決しました。皆さんどうもありがとうございました。

exe に渡されたパスが「"」(半角ダブルクオーテーション)で括られていたのが原因でした。
渡された文字列に対して両端の「"」を除く処理をすれば、きちんと読み取ってくれました。

tks さんの紹介してくださった記事がとても参考になりました。ありがとうございました。



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