none
我使用的是WIN7系統,為什麼在VB2010中用GetPrivateProfileString讀INI檔總顯示lpDefault的值? RRS feed

  • 問題

  • 各位大大,我用的是WIN7系統,為什麼在VB2010中用GetPrivateProfileString讀INI檔總顯示lpDefault的值?

    以下是我寫的CODE:

     Dim abc As String
        Dim def As String
    
        abc = Space(500)
        def = Space(500)
        WAY_BG_FULL = Space(500)
    
        Call GetPrivateProfileString("MAIN_BG", "WAY_BG", "LOADERROR", abc, 499, Application.StartupPath + SetAddress + "\pz.ini")
    
        Call GetPrivateProfileString("MAIN_BG", "WAY_SYF", "LOADERROR", def, 499, Application.StartupPath + SetAddress + "\pz.ini")
    
    
        WAY_BG_FULL = Trim(abc)
        WAY_BG_FULL = Trim(WAY_BG_FULL)
    
        WAY_SYF_FULL = Trim(def)
        WAY_SYF_FULL = Trim(WAY_SYF_FULL)
    


    我調試了WAY_BG_FULL = Trim(WAY_BG_FULL)WAY_SYF_FULL = Trim(WAY_SYF_FULL)這兩段程式碼,但是WAY_BG_FULL和WAY_SYF_FULL的值都是"LOADERROR"。

    首先我檢測了一下呼出API程式碼中的各項參數是否正確...

    我可以肯定的是這些參數我都沒有寫錯,但是為什麼每次都出現此種情況?

    還望各位先進前輩能夠給予答復,謝謝!


    2011年8月10日 上午 11:21

解答

  • 你可以在這行改成

        Call GetPrivateProfileString("MAIN_BG", "WAY_BG", "LOADERROR", abc, 499, Application.StartupPath + SetAddress + "\pz.ini")

         Messagebox.show( Application.StartupPath + SetAddress )

         確認一下取得的路徑是否正確, 因為Launch的方式會影響 Application.StartupPath 取得的目錄

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年8月10日 下午 03:40
    版主
  • 你有關 UAC 嗎?

    因為你把 INI 放在應用程式目錄下,顯然並沒考慮 UAC 應注意事項,那麼你需要關閉 UAC ,避免被 UAC 阻擋,如果被 UAC 阻擋,那跟路徑錯誤沒兩樣,都讀不到檔案。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年8月11日 下午 12:42

所有回覆

  • 還有,Application.StartupPath + SetAddress + "\pz.ini"

    這個文件是存在的...

    2011年8月10日 上午 11:27
  • 因為你會得到預設值,所以不是路徑錯誤,就是指定的 Section\Key 不存在。

    API 本身是有動作。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年8月10日 下午 12:25
  • 你可以在這行改成

        Call GetPrivateProfileString("MAIN_BG", "WAY_BG", "LOADERROR", abc, 499, Application.StartupPath + SetAddress + "\pz.ini")

         Messagebox.show( Application.StartupPath + SetAddress )

         確認一下取得的路徑是否正確, 因為Launch的方式會影響 Application.StartupPath 取得的目錄

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年8月10日 下午 03:40
    版主
  • 您好,我已經進行測試,經測試目錄沒有錯誤

    2011年8月11日 下午 12:25
  • 您好,我的路徑是正確的

    以下是ini檔的內容:

    [MAIN_BG]
    WAY_BG=TRUE_BG2
    WAY_SYF=FALSE_\_\

    2011年8月11日 下午 12:26
  • 你有關 UAC 嗎?

    因為你把 INI 放在應用程式目錄下,顯然並沒考慮 UAC 應注意事項,那麼你需要關閉 UAC ,避免被 UAC 阻擋,如果被 UAC 阻擋,那跟路徑錯誤沒兩樣,都讀不到檔案。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年8月11日 下午 12:42
  • 您好,我的確有開UAC,但是按照您所說將UAC關閉並重啟後,仍然顯示lpDefault的值...
    2011年8月12日 上午 10:54
  • 先把檔案移到 C 碟外的硬碟測試,看看是否正常,正常則為權限問題,檢查是否有其他軟體做硬碟保護。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年8月12日 下午 02:59
  • 您好,建議您使用以下URL的IniFile Class來操作會比較簡單!

    http://www.eggheadcafe.com/community/aspnet/14/78562/how-to-read-ini-file.aspx

    我有試過是OK的哦! 您再試一下吧!


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2011年8月16日 上午 08:31