.ini文件未创建



我已经开始使用.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
  1. 不要将ini保存到应用程序路径。使用%APPDATA%路径。没有路径的INI是在Windows文件夹(Win3..XP(中创建的。在Vista/7上,这些文件会重定向到Users[user]some-magic-folder(除非您的程序以"安装程序"的身份运行(
  2. 使用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位(。

最新更新