2013-11-21 49 views
1

我正在使用C++開發Windows Embedded Compact 7的應用程序。我剛剛遇到的問題是,我在應用程序中創建的.ini設置文件和.txt日誌文件在安裝的卷(這是一個非易失性分區)上被重新啓動時刪除。我的應用程序創建的Windows CE/Embedded C++非易失性文件在重新啓動時被刪除

該應用程序正在努力打開.ini文件,編輯值,保存文件,並且下次啓動時它將與我更新的設置一起存在。直到最近一次重大軟件更新之後,我纔開始遇到問題。但是在更新期間沒有觸及處理打開和關閉文件的特定功能。

儘管它看起來像是與我的應用程序和我打開/編輯/保存/關閉文件的方式有關的,因爲如果我用Wordpad打開.ini文件並手動編輯值然後保存它,設置將被保存在重新啓動。我還對所有功能進行了適當的錯誤處理,並且沒有發生錯誤。

我已閱讀MSDN上可能需要「刷新」打開的緩衝區。可能我需要這樣做?我真的希望有人處理Windows嵌入式/ CE,並可能遇到類似問題的非易失性文件分區,它更像易失性內存。

感謝您的幫助!下面是我使用寫入日誌文件基本上是相同的代碼寫入到.ini文件中的代碼:

int writeLogFile(const char* szString) 

{ 

FILE* pFile; 

    if((pFile = fopen("\\Mounted Volume\\logFile.txt", "a+")) == NULL) 

    debugMessage("Function: writeLogFile - Error! Could not open logFile.txt\n\r"); 

    else 

    debugMessage("Function: writeLogFile - Notice. Opened logFile.txt\n\r"); 

    if(fprintf(pFile, "%s\r",szString) < 0) 

    debugMessage("Function: writeLogFile - Error! There was a problem writing the alarm string to logFile.txt.\n\r"); 

    if(fclose(pFile)) 

    debugMessage("Function: writeLogFile - Error! Could not close logFile.txt\n\r"); 

    else 

    debugMessage("Function: writeLogFile - Notice. Closed logFile.txt\n\r"); 

    return 1; 

} 

回答

0

你能嘗試廣告fflush叫你關閉該文件之前。 這應該強制實際寫入。如果不明確強制文件系統可能會緩存寫入。

相關問題