Delphi XE6:如何将资源加载到TMemIniFile?

Delphi XE6: How to load resource into TMemIniFile?

我已经 运行 Delphi XE6 并且正在尝试将只读 INI 文件放入 EXE 文件中。

这个我已经解决了。加载文件也可以很好地进入 TMemo。

我定义了以下函数,将纯 TXT INI 文件从资源加载到 TMemo 中:

procedure LoadTXTfromResource(const ResourceName: string; OutMemo: TMemo);

var
  ResourceStream: TResourceStream;

begin
  ResourceStream := TResourceStream.Create(HInstance, ResourceName, RT_RCDATA);
  try
    OutMemo.Lines.LoadFromStream(ResourceStream);
  finally
    ResourceStream.Free;
  end;
end;

它运行完美。

现在,我需要的是重新编写将上述文本文件加载到 TMemIniFile 的过程。


我一直在尝试各种事情,但我似乎做不到。有什么提示吗?

您需要将资源流加载到字符串列表中,然后传输到TMemIniFile

procedure LoadINIfromResource(const ResourceName: string; IniFile: TMemIniFile);
var
  ResourceStream: TResourceStream;
  Text: TStringList;
begin
  ResourceStream := TResourceStream.Create(HInstance, ResourceName, RT_RCDATA);
  try
    Text := TStringList.Create;
    try
      Text.LoadFromStream(ResourceStream);
      IniFile.SetStrings(Text);
    finally
      Text.Free;
    end;
  finally
    ResourceStream.Free;
  end;
end;

请注意,因为您的 TMemIniFile 不是基于文件的,所以在实例化它时必须传递一个空字符串作为文件名:

IniFile := TMemIniFile.Create('');