コマンドライン文字列のダブルクォーテーションの簡単な除去処理です
前提として、
1. ファイルパスを渡す
2. 複数のファイルパスを渡さない
3. 「"hoge.txt」のような、'"'で終わっていないパスを渡さない
という条件があります。
A, B, Cはそれぞれ、どれも同じことをやっていますので、どれか一つを
使えば結構です。
;A) strmidを使用した場合
path = dir_cmdline
if( peek(path,0) == '"' ){
path = strmid(path,1,strlen(path)-2)
}
;B) getstrを使用した場合
path = dir_cmdline
if( peek(path,0) == '"' ){
getstr path,path,1,'"'
}
;C) dir_cmdlineを置き換えてみる
__path=dir_cmdline
#undef dir_cmdline
#define dir_cmdline __path
if peek(__path)=34:getstr __path,__path,1,'"'
処理の流れとしては、コマンドライン文字列が「hoge.txt」または
「"hoge.txt"」の形式で渡されるので、始めの一文字をチェックし
て、もし'"'であれば後者の形式であるので、始めの'"'の後から次
の'"'までの間の文字列を取り出し、変数pathに格納します。そうで
ない場合は、そのままpathに格納されたものを使えばOKです。
'"'はダブルクォーテーションのASCIIコード「34」(int型)を表し
ます。
peek命令は文字列の先頭から数えてn番目の文字の文字コードを返す
関数ですので、それと'"'を比較することにより、コマンドライン文
字列の先頭がダブルクォーテーションで始まっているか否かを判定す
ることができます。
strmid, getstr命令についてはHSPスクリプトエディタにそれぞれ、
「strmid」、「getstr」と打ち、打った文字列を選択した状態でF1
キーを押すことにより表示されるHSP HELP BrowserⅡを見れば、ど
ういった命令なのか分かると思います。それでも分からない場合は
掲示板で質問するといいです。
最後の#undef, #defineについては、「マクロ」や「プリプロセッサ
命令」と呼ばれるものなので、プログラムを作る上で特に覚える必要
はありません。HSPの命令をだいたい覚えてしまって飽きたころに使
い出すといいと思います。
長々と書いてしまいすみません。