忍者ブログ
プログラミングとか日常とかの覚書っぽいなにか
[1] [2]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

以前のエントリで、Windowsの予約済みファイル名について書いたことがあるんですが、その時にも気づいていなかった仕様を今日見つけてしまったので、改めて書いておきます。

Windowsで予約済みファイル名となっていて使えないのは以下の通り。
・CON
・PRN
・AUX
・NUL
・COM1~COM9
・LPT1~LPT9

解説しているサイトによっては、さらに以下を含めていることもあるようです。(MSDNには上記のもののみ記載されていますし、実際に以下のファイル名を作成することはできます。)
・COM0
・LPT0
・CLOCK$

そして予約済みファイル名に任意の拡張子をつけたもの、たとえば「con.txt」などや、フルパス指定もダメというのは以前に指摘した通り。ちなみに、拡張子のピリオドを複数含む「con.something.html」なんてのもNGだったりします(最初のピリオドまでが予約済みファイル名だとNG)。

今日見つけたのはさらに、予約済みファイル名と拡張子のピリオドとの間に1個以上の半角スペースを含めたファイル名、例えば「con  .txt」というのも予約済みファイル名「con」と同等に扱われるという点です。

ソフトウェアで予約済みファイル名のチェック機能など含めている場合にも、これをチェックできていないということは十分にありそうです。いくつかWeb上で公開されているサンプルプログラムでも、チェックできていないものが多く見受けられますし。

拍手

PR
前回の続き。

COMでは呼び出し側が受け取ったインタフェースポインタは呼び出し側がReleaseする責任があるっていうのがルールなわけで、前回の例ではそのルールが徹底されていなかったためにメモリリークが発生していたわけです。

しかし、エラーが発生して途中でreturnしたりする場合に、直前まで取得したオブジェクトすべてをReleaseしていたら、コードのあっちこっちでReleaseしなければならなくなって、本来の処理がわかりにくくなってしまう、なんてことも起こりえます。インターフェースポインタだけでなく、VARIANT型を使っていたらVariantClearも呼び出さなきゃいけないですからね。

C++では、その辺りをうまく自動的に行うようにできる方法が存在します。

拍手

ちょっとWMIに触る機会があって調べていた時に「あれ?」と思ったことを一つ。

拍手

ネットワーク通信を使用するプログラムなどでは、設定ファイルやユーザー入力でテキスト形式(ドット区切り)のIPv4アドレス(例えば「192.168.1.15」など)を使用することが多いです。この場合、プログラムでは、文字列が有効なIPv4アドレス形式であるかどうかを判定し、さらには4バイト整数形式のアドレスに変換しなければならないと思います。

その方法でパッと思いつくのが「inet_addr」関数を使用する方法。
正しいIPアドレス文字列を渡せばそのアドレスの4バイト整数値が戻り値として返されますし、フォーマットが正しくなかったりすれば戻り値は INADDR_NONE になりますからね。

しかし、昔は私も使ってたこの方法、割と厄介な(?)問題を含んでいるので、ここに記しておきます。

拍手

仕事場にて、私が直接関わってる部分ではないのですが、他の人がこの問題にぶち当たっていたようでした。

C#をはじめとする.NET Frameworkのもとで動いているプログラムは、全角ハイフン「‐」が出力されない(入れたはずが表示されていない)ことがあるようです。
どうやら.NET Frameworkが内部で使用しているGDI+の仕様らしい。

MSDNフォーラム:Labelに全角ハイフンが表示できない
http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/15b64183-af48-4495-8e7e-65767b3d6ab0

Windows Server 2008、Windows Vista、Windows Server 2003、および Windows XP で GDI+ API 関数を使用するアプリケーションを使用すると、Unicode ハイフン文字 (U+2010) が描画されない
http://support.microsoft.com/kb/956807/ja

なんでこんな仕様になってしまったんだろうか・・・・・・。
初期のものだけでなく、最新の.NET Frameworkでもバッチリ発生する模様です。
ちなみに、マイナス「-」を変換して出てくる候補で表示されない場合があるのは全角ハイフン「‐」のみで、長音記号「ー」や全角マイナス「-」やダッシュ「―」ではこの現象は起こらないようです。
私もいずれこの問題にぶち当たるかもしれないので覚えておこうかと思います。

拍手



忍者ブログ [PR]
プロフィール
HN:
はむぱい
職業:
ソフト作ったりしてる人
Twitter
最新CM
[06/09 replica rolex oyster perpetual datejust]
[06/09 bracelets imitation cartier love]
[06/09 replica the oyster perpetual datejust]
[06/09 datejust rolex oyster perpetual]
[06/09 replica gold love bangle]
カレンダー
08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
ブログ内検索
あ~いい漢字