Delphi多个.ini文件操作

Luk*_*jan 0 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;
Run Code Online (Sandbox Code Playgroud)

然后,有这个代码(在相同的程序中)

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', '', '');
Run Code Online (Sandbox Code Playgroud)

第二个加载文件的行与访问冲突一起崩溃.它不排除,麻烦来自其他一些地方,但是,我希望你们看一看,也许有人会看到另一个问题.

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

Kei*_*ler 9

尝试更换

configini := configini.Create(ExtractFilePath(Application.ExeName) + '\quickfix.ini');
Run Code Online (Sandbox Code Playgroud)

有:

configini := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\quickfix.ini');
Run Code Online (Sandbox Code Playgroud)

您试图在未初始化的变量而不是类上调用Create.

  • @LukasSynDurjan请阅读:http://meta.stackexchange.com/q/5234/了解接受情况 (2认同)