DelphiFireMonkey存储来自组件的信息

DelphiFireMonkey存储来自组件的信息,delphi,save,components,firemonkey,Delphi,Save,Components,Firemonkey,我希望我的Delphi FireMonkey应用程序将编辑文本组件中的所有信息存储在应用程序可以从另一次启动时重新加载这些数据的任何位置。 (这不是必需的,也不是必需的,但我还想保存一些Memo.Text和Combobox.ItemIndex[可能还有一些其他]数据。) 我能想象的唯一方法是编写一个过程,将所有信息存储到TMemo中并保存到文件中。(和另一个重新分配这些东西的程序)如果只有一些信息,我会这样做,但我有太多的数据要记住,所以这样做太难了 我的问题是如何让我的应用程序轻松记住所有这些

我希望我的Delphi FireMonkey应用程序将编辑文本组件中的所有信息存储在应用程序可以从另一次启动时重新加载这些数据的任何位置。 (这不是必需的,也不是必需的,但我还想保存一些Memo.Text和Combobox.ItemIndex[可能还有一些其他]数据。)

我能想象的唯一方法是编写一个过程,将所有信息存储到TMemo中并保存到文件中。(和另一个重新分配这些东西的程序)如果只有一些信息,我会这样做,但我有太多的数据要记住,所以这样做太难了

我的问题是如何让我的应用程序轻松记住所有这些数据/值。(类似于
函数SaveAllComponentsValues;
) 我的应用程序将在Mac、Windows、iOS和Android上运行,因此解决方案必须在所有这些平台上运行


我想可以存储[specific/all]组件的所有属性。这对我也很有帮助。

如果您确定不应该使用数据库,那么您可以使用INI文件来保存值并在表单上的组件中进行迭代。我对移动设备一无所知,所以对此不太确定,但这里有两个过程可以保存和恢复表单上的所有Tedit组件:

uses system.ioutils;
..


procedure TForm2.savebuttonClick(Sender: TObject);

var i:integer;
    acomponent:tcomponent;
    inifile:tinifile;

begin
  inifile:=tinifile.Create(tpath.GetHomePath+tpath.DirectorySeparatorChar+'myinifile.ini');
  for i:=0 to form2.ComponentCount-1 do
  begin
    acomponent:=form2.Components[i];
    if acomponent.ClassType=tedit then inifile.WriteString('Edits',acomponent.Name,(acomponent as tedit).Text)
  end;
  inifile.free
end;

procedure TForm2.restorebuttonClick(Sender: TObject);

var i:integer;
    acomponent:tcomponent;
    inifile:tinifile;

begin
  inifile:=tinifile.Create(tpath.GetHomePath+tpath.DirectorySeparatorChar+'myinifile.ini');
  for i:=0 to form2.ComponentCount-1 do
  begin
    acomponent:=form2.Components[i];
    if acomponent.ClassType=tedit then
    begin
      (acomponent as tedit).Text:=inifile.readString('Edits',acomponent.Name,'')
    end;
  end;
  inifile.free
end;

您阅读了吗?文档中说“此状态的保存只是“暂时的”;如果您手动或从任务管理器关闭应用程序,然后重新启动它,以前的“暂时”状态将丢失。”我想存储应用程序在后台暂停/进入或设备重新启动等情况下的信息。因此,这不是我想要我的应用程序提供给我们的,而是接近想要的解决方案。谢谢,您应该阅读完整的文档页面。它描述了两种变体。。。请参阅文档页面上的2.2存储位置和名称。是的,这非常有效,这正是我等待的解决方案。这看起来像是我等待的代码片段。另外,我可以对它进行一些修改,这样它也可以保存其他组件的值。谢谢。我没有说我不想使用数据库;不管数据以何种方式保存,但您发布的这段代码对我来说似乎是最好的方式。