Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.226.141.207] |
|
Сообщ.
#1
,
|
|
|
Всем привет!
Сложилась немного непонятная для меня ситуация. Есть проект - форма,несколько десятков label в которые исходя из определенных математических вычислений заносится информация. Вводные данные в эти label читаются из текстового файла. Так вот, в процессе работы проекта этот файл несколько раз открывается, читается, закрывается. И аналогично записывается туда информация. Все стандартно: Dim MyFile, str_ as String MyFile = FreeFile Open (Faile) For Input As #MyFile Input #MyFile, str_ .............. Close #MyFile Чтение происходит без ошибок, а вот попытка записи в этот же файл - ошибка доступа Open (Faile) For Output As #MyFile .............. Close #MyFile При этом если создать новый файл, заведомо свободный - без проблем... Может что то посоветуете? Сам проект работает исправно, тонее работал до того, как понадобилось записывать данные в файл... |
Сообщ.
#2
,
|
|
|
А какой смысл, имея ОДНО приложение, в каждой точке кода заниматься отдельными открытиями-закрытиями файла?
|
Сообщ.
#3
,
|
|
|
Цитата Akina @ Приложение имеет несколько форм. Каждая форма при загрузке читает вводные данные из файла. Если юзер нажимает кнопку изменить формат данных - то производится перезапись определенной строки и расчет идет другим методом. Итого, 1 раз открывается когда Form_Load Далее - каждый час по таймеру обновление данных Третий раз - запись в строку, если кто то нажал кнопку. По моему логично... нет? |
Сообщ.
#4
,
|
|
|
Цитата Лютик @ Каждая форма при загрузке читает вводные данные из файла. Вот тут - однозначно косяк. Надо - приложение запустилось, прочитало данные для ВСЕХ форм. А те запрашивают данные из глобальных данных приложения. Т.е. точка чтения - одна. Аналогично и точка записи одна, куда стекаются все реквесты. |
Сообщ.
#5
,
|
|
|
Цитата Akina @ Цитата Лютик @ Каждая форма при загрузке читает вводные данные из файла. Вот тут - однозначно косяк. Надо - приложение запустилось, прочитало данные для ВСЕХ форм. Ок, это понятно ... то есть у меня параллельно родился вопрос: можно не выполнять close #file пока идет работа программы и работать с файлом, а перед завершением работы закрыть файл? Вы это хотите сказать?Или имеется ввиду вынести функцию чтения-записи куда то в одно место и обращаться к ней по необходимости? Хотя так, по моему, почти тоже самое выходит. Ну и все таки - почему файл занят оказывается?Может быть так, что FreeFile пытается дать один и тот же канал, который оказывается не свободным? Мне прямо интересно. |
Сообщ.
#6
,
|
|
|
Цитата Лютик @ можно не выполнять close #file пока идет работа программы и работать с файлом, а перед завершением работы закрыть файл? Вы это хотите сказать? Конечно, можно... особенно если выполнить сброс буферов. Хотя вариант выноса в отдельный модуль, с обязательным контролем повторного входа - лучше. Добавлено Цитата Лютик @ Ну и все таки - почему файл занят оказывается?Может быть так, что FreeFile пытается дать один и тот же канал, который оказывается не свободным? Думаю, причина в том, что ничто не выполняется мгновенно. А freefile в принципе не может вернуть несвободный хэндл. |
Сообщ.
#7
,
|
|
|
Файл может быть открыт антивирусом.попробуй подождатьь немного и попробовать его открыть сновва.
|
Сообщ.
#8
,
|
|
|
Ответ найден, причем весьма любопытный: атрибут файла "скрытый" на виндовс 10 дает такой эффект...
|
Сообщ.
#9
,
|
|
|
Цитата Лютик @ атрибут файла "скрытый" на виндовс 10 дает такой эффект Ну вообще-то скрытые и системные файлы не только в десятке требуют "особого" подхода... интересно, зачем надо было хидать какой-то там файл данных? |
Сообщ.
#10
,
|
|
|
Цитата Akina @ зачем надо было хидать какой-то там файл данных? Там хранятся параметры настроек работы программы для каждого юзера. Каждому свое, как говорится. Их 61 |
Сообщ.
#11
,
|
|
|
Цитата Лютик @ Там хранятся параметры настроек работы программы для каждого юзера. Ну вообще-то для этого реестр есть, HKCU/Software... что приятно - у каждого юзера он свой, и чужие настройки туда не попадут... а во HKLM/Software можно положить дефолтные настройки, которые применяются при отсутствии или повреждении пользовательских. |
Сообщ.
#12
,
|
|
|
Цитата Akina @ Да, я уже тоже об этом думал. Следующий релиз, думаю таким и будет) Всем спасибо за отклик. |