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 и не съм имал никакви проблеми. Можете да опитате да създадете отделен проект и просто да опитате много проста команда Read/Write.   -  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); Нулиране (TempFile); ReadLn(TempFile, TempString); ... работи перфектно!   -  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 без BOM, започна да работи.

person Sebastian Xawery Wiśniowiecki    schedule 19.02.2014