Delphi 7 - 保存到特定的 .INI 文件名

2024-01-05

我修改了MasterMan82的TIniFile代码 https://stackoverflow.com/a/17631509从 & 读取多个值并将其写入 TEdit/TComboBox 和 TMemo。

请原谅我的模糊问题,我的英语不好。

所以,我的意思是:

我有几个 .INI 文件,A.ini、B.ini、C.ini ....等等。我只是将 A.ini 存储为代码中的变量。不可能将所有文件名放入代码中。

当我打开 A.ini 进行一些更改时,单击“保存”保存所做的任何更改,然后成功!当然,因为代码中已经定义了A.ini。

但是,当我打开文件 B.ini 或 C.ini 或 D.ini 时...进行更改并保存,重新打开文件,但文件中的所有更改都消失或未保存,当然,因为只有代码中定义了A.ini。

那么,我的目标是如何保留或记录所有文件修订?

下面是代码。

......

uses
  Windows, Messages, SysUtils, Variants, Classes, 
  Graphics, Controls, Forms, IniFiles, Dialogs;

......

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
   I, LinesCount: Integer;
   Read         : TIniFile;
begin
   Read  := TINIFile.Create(ExtractFilePath(Application.EXEName)+ 'A.ini');
// Read  := TIniFile.Create(ChangeFileExt(Application.Exename,'A.ini'));
  Try
   Proxy.Text   := Read.ReadString('SETTING','Proxy','');
   Port.Text    := Read.ReadString('SETTING','Port','');
   Route.Checked:= Read.ReadBool('SETTING','Route',False);
   // TO READ MEMO LINES
   LinesCount := Read.ReadInteger('MEMO', 'Lines Count', 0);
   for I := 0 to LinesCount-1 do
   Memo1.Lines.Insert(I, Read.ReadString('MEMO', 'Item'+IntToStr(I), ''));
  Finally
   Read.Free;
  end;
end;

procedure TForm1.SaveClick(Sender: TObject);
var
   I, LinesCount: Integer;
   ToSave       : TIniFile;
begin
  ToSave := TINIFile.Create(ExtractFilePath(Application.EXEName)+ 'A.ini');
  Try
   ToSave.WriteString('SETTING','Proxy',Proxy.Text);
   ToSave.WriteString('SETTING','Port',Port.Text);
   ToSave.WriteBool('SETTING','Route',Route.Checked);
   // TO SAVE MEMO LINES
   LinesCount := Memo1.Lines.Count;
   ToSave.WriteInteger('MEMO', 'Lines Count', LinesCount);
   for I := 0 to LinesCount-1 do
   ToSave.WriteString('MEMO', 'Item'+IntToStr(I), Memo1.Lines[I]);
  Finally
   ToSave.Free;
 end;
end;

procedure TForm1.OpenClick(Sender: TObject);
var
   I, LinesCount: Integer;
   OpenFile     : TIniFile;
begin    
   OpenDialog.Filter:='Ini File (.ini)|*.ini';
  if OpenDialog.Execute then begin
   Memo1.Clear;
   OpenFile := TINIFile.Create(OpenDialog.FileName);
  Try
   Proxy.Text   := OpenFile.ReadString('SETTING','Proxy','');
   Port.Text    := OpenFile.ReadString('SETTING','Port','');
   Route.Checked:= OpenFile.ReadBool('SETTING','Route',False);
   // TO READ MEMO LINES
   LinesCount   := OpenFile.ReadInteger('MEMO', 'Lines Count', 0);
   for I := 0 to LinesCount-1 do
   Memo1.Lines.Insert(I, OpenFile.ReadString('MEMO', 'Item'+IntToStr(I), ''));
  Finally
   OpenFile.Free;
  end;
 end;
end;

当您打开 ini 文件时,将文件名存储在变量中,如许多注释中所述。

例子, (FCurrentIniFilename: String;是 TForm1 中的私有变量):

In the FormCreate event:

FCurrentIniFilename := ExtractFilePath(Application.EXEName)+ 'A.ini';
Read  := TINIFile.Create(FCurrentIniFilename);
...

在打开文件事件中:

if OpenDialog.Execute then begin
  FCurrentIniFilename := OpenDialog.Filename;
  Open := TINIFile.Create(FCurrentIniFileName);
  try
    ...
  finally
    Open.Free;
  end;
end;

当您保存信息时:

ToSave := TINIFile.Create(FCurrentIniFilename);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi 7 - 保存到特定的 .INI 文件名 的相关文章

随机推荐