Delphi 多个.ini文件操作

Delphi multiple .ini files operation

最近,我遇到了一个小问题,在尝试读取 .ini 文件时会导致访问冲突。

我的问题是,我可以在同一个过程中加载多个 .ini 文件(例如 settings.ini 和 data.ini)吗?例如,我有两个ini文件,我在其中写入并从中读取。

这是一个缩短的过程,它写入数据:

//writing to file uninstall.ini
try
  ini := TIniFile.Create(edPath.Text + '\Uninstall.ini');
  ini.WriteString('Uninstall', 'qfProgramName', Label4.Caption);
  ini.WriteString('Uninstall', 'qfUninstPath', edPath.Text);
finally
  ini.Free;
end;

然后,有这段代码(在同一个过程中)

configini := configini.Create(ExtractFilePath(Application.ExeName) + '\quickfix.ini');
sectionsCount := getMaxSectionIndex(ExtractFilePath(Application.ExeName) + '\quickfix.ini');

startmenuLoc := GetProperDir(_STARTMENU);
desktopLoc := GetProperDir(_DESKTOP);
for I := 1 to sectionsCount do begin
  currentSection := 'qfShortcut_' + IntToStr(I);
  shortcutFile := configini.ReadString(currentSection, 'qfShTarget', '');
  shortcutDesc := configini.ReadString(currentSection, 'qfShDescription', '');
  shortcutFullPath := installPath + '\' + shortcutFile;
  shortcutDest := configini.ReadString(currentSection, 'qfShPath', '');
  displayName := configini.ReadString(currentSection, 'qfDisplayName', '');

  showmessage(startmenuLoc + '\' + displayName + '.lnk');
  showmessage(shortcutFullPath);

  if shortcutDest = 'spStartMenu' then CreateLink(shortcutFullPath, startmenuLoc + '\' + displayName + '.lnk', '', '');
  if shortcutDest = 'spDesktop' then CreateLink(shortcutFullPath, desktopLoc + '\' + displayName + '.lnk', '', '');

第二个加载文件所在的行因访问冲突而崩溃。不排除是其他地方的问题,不过还是请大家看看,说不定会有人看到别的问题。

此代码段用于在桌面和开始菜单中创建快捷方式,从 .ini 文件加载数据。文件 "quickfix.ini" 也在 OnCreate 中加载一次,但随后被释放。

尝试替换

configini := configini.Create(ExtractFilePath(Application.ExeName) + '\quickfix.ini');

与:

configini := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\quickfix.ini');

您正在尝试对未初始化的变量而不是 class 调用 Create。