我一直在运行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中。
我一直在尝试各种各样的事情,但我似乎无法做到这一点。任何提示?
答案 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('');