我是新來的,我的英文不太好。對任何不便表示歉意!我正在使用本機代碼(MFC)爲Windows Mobile編寫應用程序。我試圖打開一個文件,這讓我瘋狂。我試着在千元diferent方法來打開它......我真的實現它,但是當我嘗試讀取(fread
或getline
)程序崩潰不由分說:使用Windows Mobile上的本機代碼讀取文件時出錯
The program 'x' finalize with code 0 (0x0)
的GetLastError()
方法,在某些情況下,返回了我183
然後,我把我用來打開文件的代碼:
std::wifstream file(L"\\Archivos de programa\\Prog\\properties.ini");
wchar_t lol[100];
if (file) {
if(!file.eof()) {
file.getline(lol,99);
}
}
它進入的,如果所有的,但函數getline崩潰。
FILE * lol = NULL;
lol = _wfope n(ruta, L"rb");
DWORD a = GetLastError();
if (lol != NULL)
return 1;
else
return -1;
它返回1(正確),之後,在以後的函數getline,它的字符串存儲垃圾。但是,它不會崩潰!
fp.open (ruta, ifstream::in);
if (fp.is_open()) {
return 1;
}else{
return -1;
}
它進入在返回1,但在執行後函數getline()時崩潰。
我調試的getline()
方法,它崩潰的庫fstream
,右有:
if ((_Meta = fget c (_File)) == EOF)
return (false);
在if。 fgetc()
,我起訴。
我要瘋了!我需要一些線索,請!
該文件的路徑是正確的。首先,因爲在理論上,這些方法打開了文件,其次,我獲得了路徑並且匹配。
強調fread
方法也崩潰。
在此先感謝!
PS:
說,當我做任何FOPEN,方法fp.good()返回FALSE我,並且GetLastError返回我183.用另一隻手,如果我用fp.fopen(path, ifstream::in);
或std::wifstream fp(path);
的fp.good();
返回我TRUE
,並且GetLastError()
不會引發任何錯誤(0)。
問題是我的應用程序是爲Windows Mobile編程的。在Windows Mobile中沒有驅動器,並且不知道當前目錄。另一點是,我不能使用GetProfileString,因爲它不受支持。我正在爲Pocket PC 2003 SE編程,以使我的應用程序與所有Windows Mobile兼容。我無法使用Process Monitor,因爲我認爲它不適用於Windows Mobile應用程序,不是嗎? 「ruta」是路徑的同義詞。並在其中存儲.ini文件所在的路徑。謝謝你,xtofl。感謝gf,編輯我的帖子。 – Newlog 2009-11-16 12:15:59
沒有用於Windows Mobile的進程監視器......或者我錯了嗎?如果有的話,你可以發佈一個鏈接嗎?我一直都想要這樣一個工具(雖然不夠難以自己寫一個;)) – atzz 2009-11-16 12:38:22