我想将一个ini文件作为资源文件添加到我的Delphi项目中。
我知道如何将文件添加为资源文件:
项目 > 资源和图像 > 添加
但是一旦完成这个步骤,我还需要做什么才能从文件中读取数据?我之前没有使用过资源文件。
有关此过程的文档吗?
谢谢。
我知道如何将文件添加为资源文件:
项目 > 资源和图像 > 添加
但是一旦完成这个步骤,我还需要做什么才能从文件中读取数据?我之前没有使用过资源文件。
有关此过程的文档吗?
谢谢。
System.IniFiles
单元中)要求INI文件是磁盘文件。因此,您可以将资源提取到磁盘上,然后从那里读取它。TMemIniFile
的代码来指导您。复制该代码并将LoadValues
替换为从流而不是文件读取的代码。或者,如果您足够努力,您可能会找到第三方INI解析器,该解析器使用流进行操作。TMemIniFile
及其SetStrings
方法解析不驻留在磁盘上的INI内容。步骤如下:
TStringList
,并将字符串变量分配给字符串列表的Text
属性。TMemIniFile
。TMemIniFile
上调用SetStrings
,传递字符串列表。TResourceStream
对象来读取该资源。TStringList
对象。LoadFromStream
,传递资源流。TMemIniFile
。TMemIniFile
上调用SetStrings
,传递字符串列表。.ini
文件作为RCDATA
资源类型添加到项目中。然后,您可以在运行时像这样加载它:uses
..., Classes, IniFiles;
var
Ini: TMemIniFile;
List: TStringList;
Strm: TResourceStream;
begin
Ini := TMemIniFile.Create;
try
List := TStringList.Create;
try
Strm := TResourceStream.Create(HInstance, 'ResourceIDHere', RT_RCDATA);
try
List.LoadFromStream(Strm);
finally
Strm.Free;
end;
Ini.SetStrings(List);
finally
List.Free;
end;
// use Ini as needed...
finally
Ini.Free;
end;
end;
.rc
的文件(而不是直接添加.ini
文件),例如inis.rc
(因此在源文件dpr
中,您会有{$R 'inis.res' 'inis.rc'}
),并在此文件中编写以下列表:this 100 "this.ini"
that 100 "that.ini"
[GroupName]
的行),我建议您使用普通的TStringList
对象和它们的Values
属性。要加载它们的数据,请使用以下代码:var
sl:TStringList;
r:TResourceStream;
begin
sl:=TStringList.Create;
try
r:=TResourceStream.Create(HInstance,'this',MAKEINTRESOURCE(100));
try
sl.LoadFromStream(r);
finally
r.Free;
end;
//sl.Values['Setting']
finally
sl.Free;
end;
end;
MAKEINTRESOURCE
代替Pointer
。 - Uli Gerhardt在我看来,ini文件只是一个文本文件,用于与应用程序一起分发,以便您可以控制应用程序在特定环境中的行为。例如,您可以将语言存储在“language.ini”中,从源代码中读取它,并基于该语言呈现GUI界面。
为了实现这一点,您的ini文件包含:
[general]
language=Russian
...
uses Inifiles;
...
var CurrentLanguage:string;
...
Ini := TIniFile.Create('C:\somedir\languages.ini');
CurrentLanguage := Ini.ReadString('General', 'language', 'English');//if key isn't found, language is English
Ini.free();
TMemIniFile
中。 - LU RD