Command関数の戻り値が”で囲まれるのはなぜ?

解決


ニック  2002-12-28 00:15:52  No: 105768  IP: [192.*.*.*]

MDiフォームを使用して、休日表作成アプリを作っているのですが
コンパイル後のドラッグ&ドロップで実行
は問題なく起動するのですが、拡張子を関連付けしたファイルを
ダブルクリックするとファイルがありません「56」のエラーが出てしまいます。
コンパイル時にMsgbox Command
を実行すると”ファイル名”ダブルコーテーションで囲まれます
  保存しているファイルは圧縮ファイルで中はこうなっているので
  ファイルオープン時にこうなっているんだと思います。
  指定ファイル名.yc  
(指定ファイル名.yc1)作業領域
(指定ファイル名.yc2)各種設定

編集 削除
ニック  2002-12-28 00:17:52  No: 105769  IP: [192.*.*.*]

"指定ファイル名.yc"
指定ファイル名.yc"1
 errer ファイル名がありません「52」
指定ファイル名.yc"2

編集 削除
nikku  2002-12-28 00:57:39  No: 105770  IP: [192.*.*.*]

↑「56」※修正
他に作成したアプリでCommand関数を実行すると
ダブルコーテーションが表示されないんです
なんで出るのか解りません、それとも
これは絶対出るものとして処理しても良いのでしょうか?

編集 削除
YuO  2002-12-28 01:43:34  No: 105771  IP: [192.*.*.*]

スペースが入るようなパスを渡すために,通常パスは"で囲みます。
囲まれていない場合も予想して,"の有無で分離する必要があります。

この仕様は,例えば,
C:\Program Files\TEST.EXE
をコマンドラインとして渡す場合に,
foo C:\Program Files\TEST.EXE
と渡すと,
1.) C:\Program
2.) Files\TEST.EXE
の二つの引数を渡していることになります。そこで,
foo "C:\Program Files\TEST.EXE"
としてやることで,ファイル名を確実に渡すことができます。
関連付けでは,通常
"実行ファイル名" "%1"
とするのが普通ですね。

編集 削除
ニック  2002-12-28 23:11:09  No: 105772  IP: [192.*.*.*]

YuOさんレス本当にありがとうございますぅ(T_T)  
    困っているんです、実は…
「保存ファイル名.yc」が実在するファイルなのですが
その中に、2種類のファイルが圧縮されて格納されているんです
その中のファイルを取り出す際に保存されたファイル名(パス含む)
が必要になるんですが、僕は単純に保存したファイルに数字を付けただけの
名前で「中のファイルを格納」しています。(↑※1番目)
  
  なので、読み出す際にこのパスの後ろに数字を追加して
保存時と同じ名前にして取り出す必要があるんです。
 i = command & "1"
 i2 = command & "2"
それで単純にこの処理をしているんですが、しかし
実行するとダブルコーテーションが邪魔になるんです(↑※2番目)
  ダブルコーテーションを検索して""と置き換えるにも
どうして良いものか困っています(T_T)

編集 削除
oku  URL  2002-12-29 01:40:58  No: 105773  IP: [192.*.*.*]

多分これでいけると思います。

Private Sub Form_Load()
    Dim strArray()      As String
    Dim intIndex        As Integer

    strArray = Split(Command, """")
    For intIndex = 0 To UBound(strArray) - 1
        MsgBox strArray(intIndex)
    Next intIndex
End Sub

ダブルコーテーションで区切って配列に保存すればOKだと思います。
ダブルコーテーションが入っていなくてもこのまま使えるはずです。

編集 削除
nikku  2002-12-29 22:51:35  No: 105774  IP: [192.*.*.*]

ありがとうございます(T_T)
  解決しました—っYuOさん
大感謝です
  原因は最初に指摘して頂いた
拡張子関連付けの失敗でしたすいませんですm(__)m

編集 削除