最近,我遇到了一个小问题,在尝试读取.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上加载一次,但随后被释放。
答案 0 :(得分:9)
尝试替换
configini := configini.Create(ExtractFilePath(Application.ExeName) + '\quickfix.ini');
使用:
configini := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\quickfix.ini');
您正尝试在未初始化的变量上调用Create,而不是在类上调用。