如何覆盖INI文件

How to overwrite INI file

我有这段代码可以将对象的位置保存在 ini 文件中,但是当我尝试覆盖已保存的文件时,它不会删除文件中当前的数据。

我有一个弹出窗口询问用户是否要覆盖,但它并没有清除整个文件,我该如何更改它呢?

procedure TForm1.SaveFile(Sender: TObject);
var
  Dialog : TSaveDialog;
begin
  Dialog := TSaveDialog.Create(self);
  try
    //dialog properties go here
    Dialog.Filter := 'Title (*.ini)|*.ini';
    Dialog.Options := Dialog.Options + [ofOverwritePrompt];
    if Dialog.Execute then
    begin
      //any saving procedures go here if required

      ShowMessage('File saved: ' + Dialog.FileName);
    end 
  else
      ShowMessage('Save file was cancelled');
  finally
    Dialog.Free;
  end;
end;

以下过程将对象保存到文件本身:

procedure TForm1.Save(const FileName: string);
var
  Ini: TMemIniFile;
  I: Integer;

procedure WhatYouAreSaving(Object: TButton);
  var
    Section: string;
  begin
    Section := 'Object'
    //Properties you want to save go here
  end;

begin
  Ini := TMemIniFile.Create(FileName);
  ////For reference, the answer provided would go here
  try
    WhatYouAreSaving(Object);
    Ini.UpdateFile;
  finally
    Ini.Free;
  end;
end;

要清除 ini 文件的内容,请在 Ini := TMemIniFile.Create(FileName);

之后调用 Ini.Clear

Erases all data from the INI file in memory.

Call Clear to erase all data from the INI file that is currently buffered in memory. All sections, keys, and values are erased.


要删除 ini 文件中的部分,请使用 TMemIniFile.EraseSection