2014-02-18 48 views
0

我已經寫了一些代碼:德爾福XE5 - Android電子 - TMemIniFile行爲異常

MnemonicList := TStringList.Create(); 

{$IFDEF Android} 
    IniPath := TPath.Combine(TPath.GetDocumentsPath, ADefaultLanguage + '.ini'); { Internal } 
{$ENDIF} 

{$IFDEF Win32} 
    IniPath := TPath.Combine(ExtractFilePath(ParamStr(0)), 'Lang\' + ADefaultLanguage + '.ini'); 
{$ENDIF} 

if FileExists(IniPath) then 
begin 
MemIniFile := TMemIniFile.Create(IniPath); 
ShowMessage(IniPath); 

MemIniFile.ReadSections(MnemonicList); 
ShowMessage(IntToStr(MnemonicList.Count)); 
end; 

第二ShowMessage()與4時,當在Android上運行...文件被正確填充,在Windows和運行0結果FileExists(IniPath)在Android上也給True。我也可以在編輯器中打開Android和Windows上的文件。 Android上的TMemIniFile有什麼區別嗎?

+1

只有你發佈的內容很難說,但你確定INI文件是在Android上填充的嗎?請記住,每次將應用程序部署到您的設備時,存儲都會被擦乾淨。另外,你怎麼得到你的路?在Android上它應該是這樣的'TPath.GetDocumentsPath + PathDelim +'mysettings.ini'' – Sentient

+0

是的,沒關係。文件在文件系統中......我現在編輯了問題。 –

+1

您的路徑設置對我來說看起來不錯。我在Android上的一個項目中使用TMemINIFile,並且我沒有遇到任何問題。你可以嘗試創建一個單獨的項目,並嘗試一個非常簡單的讀/寫命令。 – Sentient

回答

1

INI文件字符編碼爲時出現問題。當我更改爲UTF-8 w/o BOM時,它開始工作。