Delphi 为什么不保存ini文件?
我正在尝试保存unicode字符串。这就是我所拥有的: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
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;