【问题标题】:Delphi XE5 - Android - TMemIniFile behaves unusualDelphi XE5 - Android - TMemIniFile 行为异常
【发布时间】:2014-02-18 14:48:01
【问题描述】:

我已经写了一些代码:

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() 在 Windows 上运行时结果为 4,在 Android 上运行时结果为 0...文件已正确填充,并且 FileExists(IniPath) 在 Android 上也为 True。我也可以在编辑器中打开 Android 和 Windows 上的文件。 Android 上的 TMemIniFile 有什么不同吗?

【问题讨论】:

  • 仅凭您发布的内容很难说,但是您确定在 Android 上填充了 INI 文件吗?请记住,每次将应用程序部署到设备时,存储都会被清除干净。另外,你是如何得到你的路径的?在 Android 上应该是这样的 TPath.GetDocumentsPath + PathDelim + 'mysettings.ini'
  • 是的,没关系。文件在文件系统中...我现在编辑了问题。
  • 您的路径设置对我来说看起来不错。我在 Android 上的一个项目中使用 TMemINIFile,我没有遇到任何问题。您可以尝试创建一个单独的项目,然后尝试一个非常简单的读/写命令。
  • IniPath is '/data/data//files/pl.ini' 我无法使用文件管理器到达那里,但 FileExists 结果为 True
  • 如果您尝试读取单个值而不是部分会发生什么?不知道为什么会有所不同,但我没有 ReadSections。

标签: android windows delphi firemonkey delphi-xe5


【解决方案1】:

INI 文件字符编码有问题。当我更改为 UTF-8 w/o BOM 时,它开始工作了。

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多