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

时间:2017-09-12 07:33:32

标签: delphi ini

我一直在运行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中。

我一直在尝试各种各样的事情,但我似乎无法做到这一点。任何提示?

1 个答案:

答案 0 :(得分:4)

您需要将资源流加载到字符串列表中,然后转移到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('');