Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 为什么不保存ini文件?_Delphi_Unicode_Settings_Ini_Delphi Xe5 - Fatal编程技术网

Delphi 为什么不保存ini文件?

Delphi 为什么不保存ini文件?,delphi,unicode,settings,ini,delphi-xe5,Delphi,Unicode,Settings,Ini,Delphi Xe5,我正在尝试保存unicode字符串。这就是我所拥有的: Uses IniFiles; const SZ_APP_NAME; Procedure TForm1.SaveSettings; var _MemIniU: TMemIniFile; SettingsPath: string; begin SettingsPath := GetHomePath + PathDelim + SZ_APP_NAME + PathDelim; _MemIniU := TMemIniFile.Cr

我正在尝试保存unicode字符串。这就是我所拥有的:

Uses IniFiles;
const
SZ_APP_NAME;

Procedure TForm1.SaveSettings;
var
  _MemIniU: TMemIniFile;
  SettingsPath: string;
begin
  SettingsPath := GetHomePath + PathDelim + SZ_APP_NAME + PathDelim;
  _MemIniU := TMemIniFile.Create(ChangeFileExt(SettingsPath, 'Settings.ini'),
    TEncoding.UTF8);
  try
    if Form1.WindowState <> TWindowState.wsMaximized then
    begin
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowLeft', Form1.Left);
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowTop', Form1.Top);
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowWidth', Form1.Width);
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowHeight', Form1.Height);
      _MemIniU.WriteString(SZ_APP_NAME, 'UnicodeText', Edit1.Text);
    end;
  finally
    _MemIniU.Free;
  end;
end;
但未创建ini文件。我做错了什么?RAD Studio XE5。

必须调用TMemIniFile.UpdateFile将信息保存到文件中

文件对此非常清楚

TMemIniFile缓冲对INI文件的所有更改。INI文件在首次创建对象时读取一次。INI文件中的数据存储在嵌套字符串列表中。INI文件中的每个部分在最顶端的字符串列表中占据一个元素,其中的每个元素本身可能包含一个字符串列表。每个包含的字符串列表中的每个元素表示节中的一个键。读取数据后,对数据的任何更改都存储在内存中。要将内存中的数据写回关联的INI文件,请调用UpdateFile方法


我修改了你的代码。您可以看到有_MemIniU.UpdateFile;下面是命令

如果不使用UpdateFile命令,则不会保存所做的任何更改

致意

Uses IniFiles;
const
SZ_APP_NAME;

Procedure TForm1.SaveSettings;
var
  _MemIniU: TMemIniFile;
  SettingsPath: string;
begin
  SettingsPath := GetHomePath + PathDelim + SZ_APP_NAME + PathDelim;
  _MemIniU := TMemIniFile.Create(ChangeFileExt(SettingsPath, 'Settings.ini'),
    TEncoding.UTF8);
  try
    if Form1.WindowState <> TWindowState.wsMaximized then
    begin
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowLeft', Form1.Left);
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowTop', Form1.Top);
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowWidth', Form1.Width);
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowHeight', Form1.Height);
      _MemIniU.WriteString(SZ_APP_NAME, 'UnicodeText', Edit1.Text);
      _MemIniU.UpdateFile;
    end;
  finally
    _MemIniU.Free;
  end;
end;