◀一般トップへ
  • 5941 階層の深いフォルダにあるファイルが開けない
    • 5942 RE: 階層の深いフォルダにあるファイルが開けない
    • 5943 Re:階層の深いフォルダにあるファイルが開けない
    • 5944 Re:階層の深いフォルダにあるファイルが開けない
  • [5941] 階層の深いフォルダにあるファイルが開けない ek 2007年03月12日 19:01

    初めて投稿させて頂きます。

    ネットワーク上の階層の深いフォルダにあるファイルを開こうとすると
    「sakura.exe [2922] でハンドルされていない Win32 の例外が発生しました。」
    というダイアログが出てファイルを開けません(メモ帳では普通に開けます)。

    使用バージョンは 1.5.10.0 (V1310) です。

    たぶんパスの長さが256を超えているからだと思うのですが
    (上の階層に移動したら開けました)、パスを短くする以外に
    何か対策はありますでしょうか?
    • [5942] RE: 階層の深いフォルダにあるファイルが開けない wakura 2007年03月12日 23:02


      ・他のアプリでも同様の問題出る可能性あると思うので_MAX_PATHを超えないようにす
      るのが無難。
      (ドライブ名から数えて260-1文字)

      ・アプリケーションエラーはバッファオーバーフローなので、ガードしたいなら
      strsafe.h
      をglobal.hあたりでインクルードしてコンパイルするとエラーが出るのでその部分を
      全部StringC*系関数に書き換える。
      (ただし、ファイルは開けない)

      ・使えるようにしたいなら
      #define _MAX_PATH 260 /* max. length of full pathname */
      #define _MAX_DRIVE 3 /* max. length of drive component */
      #define _MAX_DIR 256 /* max. length of path component */
      #define _MAX_FNAME 256 /* max. length of file name component */
      #define _MAX_EXT 256 /* max. length of extension component */
      を使っているところを全部拡張してコンパイルする。
      (アンダーバーがついてないのもある)
      ただし、この値を使わずに独自にバッファ確保している部分もあると思われる。
    • [5943] Re:階層の深いフォルダにあるファイルが開けない じゅうじ 2007年03月13日 07:39

      ▼ ekさん
      > (上の階層に移動したら開けました)、パスを短くする以外に
      > 何か対策はありますでしょうか?

      >>data:4688
      ネットワークドライブで、新ドライブに下の(上の?)階層を割り当てる。
    • [5944] Re:階層の深いフォルダにあるファイルが開けない ek 2007年03月13日 09:57

      >wakuraさん、じゅうじさん

      素早い回答ありがとうございました。
      ネットワークドライブを割り当てることにより、ファイルを開けるようになりました。