2014-02-18 1 views
0

Я написал код:Delphi 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, когда работает на Windows, и 0, когда работает на Android ... Файл заполняется правильно и FileExists (IniPath) дает True также на Android. Я также могу открывать файлы на Android и Windows в редакторе. Есть ли какие-либо отличия в TMemIniFile на Android?

+1

Сложно сказать только то, что вы разместили, но вы уверены, что INI-файл заполнен на Android? Помните, что каждый раз, когда вы развертываете приложение на своем устройстве, хранилище очищается. Кроме того, как вы получаете свой путь? На Android это должно быть что-то вроде этого: 'TPath.GetDocumentsPath + PathDelim + 'mysettings.ini'' – Sentient

+0

Да, все в порядке. Файлы находятся в файловой системе ... Я редактировал вопрос сейчас. –

+1

Ваша установка пути выглядит хорошо для меня. Я использую TMemINIFile в проекте на Android, и у меня не было никаких проблем. Вы можете попробовать создать отдельный проект и просто попробовать очень простую команду чтения/записи. – Sentient

ответ

1

Ошибка в файле INI кодировка символов. Когда я перешел на UTF-8 без спецификации, он начал работать.

 Смежные вопросы

  • Нет связанных вопросов^_^