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?


person Sebastian Xawery Wiśniowiecki    schedule 18.02.2014    source источник
comment
Трудно сказать только то, что вы опубликовали, но вы уверены, что файл INI заполнен на Android? Имейте в виду, что каждый раз, когда вы развертываете приложение на своем устройстве, хранилище очищается. Кроме того, как вы получаете свой путь? На Android это должно быть примерно так TPath.GetDocumentsPath + PathDelim + 'mysettings.ini'   -  person Sentient    schedule 18.02.2014
comment
Да, все в порядке. Файлы находятся в файловой системе... Сейчас я отредактировал вопрос.   -  person Sebastian Xawery Wiśniowiecki    schedule 18.02.2014
comment
Ваша настройка пути выглядит хорошо для меня. Я использую TMemINIFile в проекте на Android, и у меня не было никаких проблем. Вы можете попробовать создать отдельный проект и просто попробовать очень простую команду чтения/записи.   -  person Sentient    schedule 18.02.2014
comment
IniPath - это '/data/data/‹name›/files/pl.ini'. Я не могу попасть туда с файловым менеджером, но FileExists дает True   -  person Sebastian Xawery Wiśniowiecki    schedule 18.02.2014
comment
AssignFile(TempFile, IniPath); Сброс(Временный файл); ReadLn(ВременныйФайл,ВременнаяСтрока); ... работает идеально!   -  person Sebastian Xawery Wiśniowiecki    schedule 18.02.2014
comment
Что произойдет, если вы попытаетесь прочитать отдельное значение вместо раздела? Не уверен, почему это будет по-другому, но у меня нет ReadSections.   -  person Sentient    schedule 18.02.2014
comment
решено... взгляните на ответ   -  person Sebastian Xawery Wiśniowiecki    schedule 19.02.2014


Ответы (1)


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

person Sebastian Xawery Wiśniowiecki    schedule 19.02.2014