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('');
我已经 运行 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('');