スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ブログランキング・にほんブログ村へ

--.--.-- | スポンサー広告

FindFirstFileと日本語パス

 JNTrainにて時刻表データのパスに日本語が混じっている場合、読み込みに失敗するという情報を頂いていたので調べてみました。


 デバッガでトレースすればある程度の情報は確認できたのですが、最近モチベーションが落ちていたのでサボってました…。 自分の環境では日本語混じりでなく、特に支障がなかったというのもありましたが。

 で、パスの加工に失敗しているのかと思いきや、ファイル有無(ディレクトリ)チェックのための処理が悪さをしていたようで。 FindFirstFile関数を使用していたのですが、これが日本語のパスに対応していない(?)様です。 GetLastError関数にてエラーの原因をチェックしてみると、Error:18 "これ以上ファイルがありません。 "とのこと。

 で、ググってみたのですが、これといって適合する情報なし。 で、同じような関数が複数あるのもWindowsのAPIにはありがちなことなので、調べてみると、ありました。 FindFirstFileEx関数です。 Exってのが微妙なネーミングですが、まぁ、いつものことなので…

で、以下のように処理を変更。

従来
HANDLE  hFind = FindFirstFile( pFile, &_FindData);

修正後
HANDLE  hFind = FindFirstFileEx( pFile, FindExInfoStandard, &_FindData,
                         FindExSearchNameMatch, NULL, 0);


 すんなり、正常動作しました。 とりあえず、Exのほうを使っとけばいいみたいなんですが、「FindFirstFile FindFirstFileEx 日本語」とかでぐぐってもそれらしき情報が見当たらないのがorz。 英文のMSDNを読んでも、どちらもwidecharactersってあるから、大丈夫そうなんだけどねぇ。

 とりあえず、今公開しているアプリ、全部FindFirstFileのほうを使用しているので、置き換えにゃだめですね。
 

テーマ:プログラミング - ジャンル:コンピュータ

ブログランキング・にほんブログ村へ

2009.08.23 | Comments(0) | Trackback(0) | Mobile プログラミング

コメント

コメントの投稿


秘密にする

«  | HOME |  »

FC2Ad

04 | 2017/05 [GO]| 06
- 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 31 - - -

最近の記事一覧 カテゴリ一覧 コメント一覧 トラックバック一覧 プロフィール リンク一覧
[カテゴリ]
WEBコンサルティング・ホームページ制作のバンブーウエイブ

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

カスタム検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。