В последнее время я столкнулся с небольшой проблемой, которая вызывает нарушение доступа при попытке чтения файлов .ini.Работа с файлами в нескольких файлах Delphi
Мой вопрос: могу ли я загрузить несколько файлов .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, но затем освобождается.
На какой строке происходит нарушение доступа? –
Ваша 'попытка' неверна. Делается так: 'obj: = TObject.Create; попробуйте dostuff; наконец obj.Free; end; 'Пожалуйста, воспользуйтесь этой возможностью, чтобы узнать, как отлаживать. Гораздо эффективнее выполнять основную отладку самостоятельно. Если вы задаете вопросы о переполнении стека каждый раз, когда вы совершаете небольшую ошибку (что все мы делаем много), это неэффективно. Если бы вы могли отлаживать, вы бы знали, какая строка кода подняла нарушение прав доступа, и вы поймете, что случилось. С другой стороны, возможно, вы еще не знаете, что такое нарушение прав на самом деле. Это знание важно. –
Keith, нарушение прав доступа происходит в строке, где я загружаю quickfix.ini, однако, даже когда я комментирую весь другой окружающий код, нарушение прав доступа по-прежнему сохраняется. Дэвид, спасибо за ответ, однако, я перекодировал свои заявления о попытках, и ничего не изменилось. Любые другие идеи? Заранее спасибо! –