Delphi多个.ini文件操作

时间:2015-02-25 09:50:22

标签: delphi ini

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

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

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

//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上加载一次,但随后被释放。

1 个答案:

答案 0 :(得分:9)

尝试替换

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

使用:

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

您正尝试在未初始化的变量上调用Create,而不是在类上调用。