トップページ > 記事閲覧
FileRead_findNextでアクセス違反
名前:meigin 日時: 2017/02/13 13:12

何時もお世話になっています。 3Dモデル機能&ソフトウエアレンダリング機能無しパッケージVer 3.17aですが、 FileRead_findNextでアクセス違反が出ます。 64bit ユニコードにしてあります。 リストボックスにファイルの名前を表示するだけなんですが……。 std::vector<std::wstring> g_name_list; void myRequire(HWND hWnd, const TCHAR *name) { FILEINFO lp; std::wstring Pattern = name; Pattern += _T("*"); int hFind = FileRead_findFirst(Pattern.c_str(), &lp); if (hFind == -1) { return; } do { if (lp.DirFlag && wcscmp(lp.Name, _T("..")) && wcscmp(lp.Name, _T("."))) { std::wstring sub = name; sub += lp.Name; sub += _T("/"); std::wstring fname = sub; fname += _T("main.js"); int fp = DxLib::FileRead_open(fname.c_str()); if (!fp) { myRequire(hWnd, sub.c_str()); }else { DxLib::FileRead_close(fp); //SetItemList(hWnd, GetFileName(lp.Name)); g_name_list.push_back(sub); } } } while (!FileRead_findNext(hFind, &lp)); FileRead_findClose(hFind); }
メンテ

Page: 1 |

Re: FileRead_findNextでアクセス違反 ( No.1 )
名前:管理人 日時:2017/02/14 00:27

おぉ、かなりお久しぶり…でしょうか? (・・;; FileRead_findFirst の戻り値は int ではなく DWORD_PTR となっていて、 32bitビルドでは 32bit の値ですが、64bitビルドでは 64bit の値となります 64bitビルドの環境でも 32bit の型である int では役不足なので、メモリの不正なアクセスが発生してしまいます なので、こちらの部分を int hFind = FileRead_findFirst(Pattern.c_str(), &lp); こうしていただければ DWORD_PTR hFind = FileRead_findFirst(Pattern.c_str(), &lp); 正常に動作すると思いますので、よろしければお試しください m(_ _)m
メンテ
Re: FileRead_findNextでアクセス違反 ( No.2 )
名前:meigin 日時:2017/02/14 11:51

有難う御座います。 上手くいました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存