我试图写入Delphi中的ini文件,但我一直在收到错误

row*_*lip -1 delphi ini

这是我写入ini文件的代码.

 Ini := TIniFile.Create(ChangeFileExt('StudentALevelMathsTracker.exe','.ini')) ;
 try
   Ini.WriteString('Settings', 'FilePath', edtFilePath.text);
   Ini.UpdateFile;
 finally
   Ini.Free;
 end;
Run Code Online (Sandbox Code Playgroud)

但是,当我运行这个时,我得到一个错误说

项目ALevelMathsTracker.exe引发了异常类EIniFileException,并显示消息"无法写入studentALevelMathsTracker.ini"

这是我在网络上的问题还是我的代码?

Rem*_*eau 5

TIniFile 是PrivateProfile API的瘦包装器.

如果未指定完整路径,则API会创建相对于OS系统文件夹的.ini文件,该文件夹可能没有写入权限.

如果您将文件名设置为Application.ExeNameParamStr(0),则表示您正在创建相对于应用程序文件夹的.ini文件,该文件夹可能没有写入权限,尤其是在安装了应用程序的情况下Program Files.

你应该做的是使用SHGetFolderPath(CSIDL_APPDATA)或类似的API来获取用户的AppData文件夹的路径,在其下创建自己的子文件夹,然后在该子文件夹中创建.ini文件.