5

私のユーザーの 1 人が、私のアプリがファイル名でセミコロンをサポートしていない理由を尋ねました。コードをステップ実行しましたが、Windows 関数 GetOpenFileName がセミコロンを含むファイル名を切り捨てているようです。例: "one;two.wav" -> "one"。

マイクロソフトは、コロンは許可されていないと言っていますが、セミコロンについては言及していません...

http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

それらは合法かどうか?

編集: ..そして、GetOpenFileName() でファイル名にセミコロンを使用する方法は?

ああ、奇妙です - ファイル名は正しいですが、左に「スクロール」されています。したがって、「one;two.wav」は、クリックして左矢印を押すまでは「two.wav」のように見えます (それで問題ありません)。したがって、それ自体はバグではなく、奇妙な動作です。

4

5 に答える 5

8

NTFS ファイル パスではセミコロンを使用できます

Unicode 文字および拡張文字セット (128 ~ 255) の文字を含む、現在のコード ページの任意の文字を名前に使用します。ただし、次の文字は除きます。

次の予約文字:

  • <(未満)
  • >(より大きい)
  • :(結腸)
  • "(二重引用符)
  • /(スラッシュ)
  • \(バックスラッシュ)
  • |(縦棒またはパイプ)
  • ?(疑問符)
  • *(アスタリスク)
  • 整数値ゼロ。ASCII NUL 文字と呼ばれることもあります。
  • 整数表現が 1 ~ 31 の範囲にある文字。ただし、これらの文字が許可されている代替ストリームは除きます。
  • ターゲット ファイル システムで許可されていないその他の文字。

Win7 システムでファイル名にセミコロンを追加できます。予期しない文字 (最も顕著なのはスペース) を使用して奇妙なことを行うコード (おそらく自分のコードまたはサードパーティのコード) に注意してください。

于 2010-10-06T05:01:39.893 に答える
4

Windowsハンドブックでは省略されている場合がありますが、セミコロンも予約文字です。たとえば、「dir.dat; .bak」は有効なコマンドです。同じことがプラス文字にも当てはまります。たとえば、「copytest1.dat +test2.dattest3.dat」は有効なコマンドです。

于 2012-06-12T07:59:47.773 に答える
2

True: Windows では、ファイル名にセミコロンを使用できます。しかし、そのようなファイルをデータ CD または DVD ディスクに書き込むと、名前が切り捨てられます。これは、aHead Nero バージョン 9 を使用したときに経験したことです。

于 2012-06-12T07:42:05.450 に答える
1

はい、許可されています。コマンドラインでそれらを実行している場合は、それらの中に引用符を入れる必要があります.

于 2010-10-06T05:01:46.717 に答える
1

はい。セミコロンは、Windows ファイル名で有効な文字です。ただし、他のプログラムに問題があったとしても、私は驚かないでしょう。

于 2010-10-06T05:02:49.813 に答える