我已经开始使用.ini文件,因为我意识到它与.txt文件相比有很多优点。无论如何,我在谷歌上搜索了"delphi-infiles",现在我正在遵循DelphiAbout的指南。然而,我尝试的第一行就给我带来了麻烦,尽管所有的语法都是正确的。
Delphi关于代码:
IniFile := TIniFile.Create('myapp.ini') ;
我的代码:
IniFile := TIniFile.Create('SWEDISH_HOUSE_MAFIA.ini');
唯一的区别是.ini文件本身的名称。还有,是的,我有:
- 在"uses"子句中声明的"IniFiles">
- (本地(声明的IniFile
我已经将该代码放在FormCreate下,但问题是这个.ini文件不是在程序运行时创建的。有人知道问题出在哪里吗?我问过一个朋友,他说这是一个许可问题。
额外细节:
- 操作系统-Windows 7 Ultimate 64位(管理权限(
- 程序存储在-我的文档中
- 我使用-德尔福2010
第一个问题是,只有在向ini文件中写入内容时才会创建该文件。我怀疑目前您没有调用其中一个WriteXXX
方法。
另一个问题是,如果你不符合你的路径,那么TIniFile
会试图在Windows目录中找到它,当然你没有在那里写的权限。TIniFile
所基于的底层API是私有配置文件API,该配置文件长期以来一直受到抨击,性能非常糟糕,并且充满了奇怪的皱纹。文件说明:
如果lpFileName参数不包含文件的完整路径和文件名,WritePrivateProfileString将在Windows目录中搜索该文件。如果该文件不存在,此函数将在Windows目录中创建该文件。
显然,你应该完全符合你的道路。
但是,我强烈建议您考虑使用TMemIniFile
而不是TIniFile
,因为TMemIniFile
避免了私有配置文件API的所有陷阱。
如果您确实切换到TMemIniFile
,请记住在销毁ini文件之前调用UpdateFile
,因为这将把设置保存到磁盘。否则CCD_ 9是CCD_。
要确保文件确实保存在磁盘上,使用
IniFile.UpdateFile
- 不要将ini保存到应用程序路径。使用
%APPDATA%
路径。没有路径的INI是在Windows文件夹(Win3..XP(中创建的。在Vista/7上,这些文件会重定向到Users[user]some-magic-folder
(除非您的程序以"安装程序"的身份运行( - 使用TMemFile将大大加快操作速度。您需要调用UpdateFile/Free来更新文件,但它要快得多
TForm1.btnWriteClick(Sender: TObject);
var
myINI : TINIFile;
begin
myINI := TINIFile.Create('Tryfoldermyini.ini');
myINI.WriteString('Settings', 'Text Box', 'Whatever text');
myINI.Free;
end;
就像答案3所说的,你只需要在ini中写一个值:(这对我来说很有效(赢得了7个最终64位(。