Форум: "Начинающим";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
ВнизФайл занят другим процессом Найти похожие ветки
← →
man (2008-06-16 15:04) [0]Программе время от времени нужно читать данные из файла. При этом иногда выдается ошибка: "Процесс не может получить доступ к файлу, так как он занят другим процессом". В других программах этот файл не открыт. Я подозреваю, что файл может блокировать антивирус. Что мне сделать, чтобы избежать этой ошибки?
← →
clickmaker © (2008-06-16 15:08) [1]> "Процесс не может получить доступ к файлу, так как он занят
> другим процессом". В других программах этот файл не открыт
как узнал? его может держать сервис или "невизуальная" утилита
← →
ciborg (2008-06-16 15:09) [2]
> как узнал? его может держать сервис или "невизуальная" утилита
Может быть, но что мне делать?
← →
Поросенок Винни-Пух © (2008-06-16 15:11) [3]это не ошибка.
← →
ciborg (2008-06-16 15:13) [4]
> Поросенок Винни-Пух © (16.06.08 15:11) [3]
> это не ошибка.
Я считаю, что если программа не делает то, что должна, значит ошибка.
← →
clickmaker © (2008-06-16 15:21) [5]> Может быть, но что мне делать?
слишком мало улик для расследования. Что за файл, что и зачем из него читать, почему его может открыть кто-то еще?..
← →
Поросенок Винни-Пух © (2008-06-16 15:24) [6]Я считаю, что если программа не делает то, что должна, значит ошибка.
это не ошибка.
а программа не делает то, что она должна по причине которую ты уже знаешь.
← →
DrPass © (2008-06-16 15:33) [7]
> Что мне сделать, чтобы избежать этой ошибки?
Сначала взять, например, Process Explorer, и выяснить, кем этот файл на самом деле открыт
← →
Поросенок Винни-Пух © (2008-06-16 15:35) [8]> Что мне сделать, чтобы избежать этой ошибки?
Вопрос как всегда на пять баллов.
Не запускай свою программу или не открывай в ней этот файл. И избежишь этой ошибки.
Ты это хотел узнать? теперь узнал.
← →
ciborg (2008-06-16 15:38) [9]
> DrPass © (16.06.08 15:33) [7]
>
> > Что мне сделать, чтобы избежать этой ошибки?
>
> Сначала взять, например, Process Explorer, и выяснить, кем
> этот файл на самом деле открыт
Если бы все было так просто! У меня на компе эта ошибка не возникает, а вот у другого человека, с которым мы общаемся только по почте, периодически появляется. И объяснять этому человеку как открыть процесс задач и что там смотреть практически бесполезно.
← →
Поросенок Винни-Пух © (2008-06-16 15:40) [10]а что даст знание того, каким именно процессом открыт файл?
поможет родить совет прибить этот процесс?
← →
ciborg (2008-06-16 15:40) [11]
> Вопрос как всегда на пять баллов.
> Не запускай свою программу или не открывай в ней этот файл.
> И избежишь этой ошибки.
>
> Ты это хотел узнать? теперь узнал.
Зададим по другому: "Как избежать этой ошибки, при этом запуская программу и открывая в ней этот файл"?
← →
Поросенок Винни-Пух © (2008-06-16 15:42) [12]> Что мне сделать, чтобы избежать этой ошибки?
>"Как избежать этой ошибки, при этом запуская программу и открывая в ней этот файл"?
Это один и тот же вопрос.
← →
Поросенок Винни-Пух © (2008-06-16 15:44) [13]try
except
end
или
GetLastError
в зависимости от того, как открываешь.
И все.
А то что он уже открыт - воспринимай как объективную реальность.
← →
ciborg (2008-06-16 15:51) [14]А тому человеку, который пользуется программой мне тоже сказать, что это нормально?
← →
ciborg (2008-06-16 15:59) [15]В каком случае антивирускик может заблокировать файл?
← →
Поросенок Винни-Пух © (2008-06-16 15:59) [16]разумеется.
← →
Плохиш © (2008-06-16 16:44) [17]
> man (16.06.08 15:04)
> Программе время от времени нужно читать данные из файла.
Открывай файл не ексключиво и только для чтения.
← →
Anatoly Podgoretsky © (2008-06-16 16:45) [18]Как открываешь, есть подозрение, что неправильно.
← →
Riply © (2008-06-16 16:56) [19]> [18] Anatoly Podgoretsky © (16.06.08 16:45)
> Как открываешь, есть подозрение, что неправильно.
Исходя из фразы автора: "Программе время от времени нужно читать данные из файла"
добавлю, что "меня терзают смутные сомнения" что мы не закрываем за собой Handl`ы :)
← →
Поросенок Винни-Пух © (2008-06-16 17:00) [20].... и делаем это только когда программа запущена не дома
← →
Milk (2008-06-16 17:05) [21]Автор пока не ответил на главный вопрос:
> clickmaker © (16.06.08 15:21) [5]
> Что за файл, что и зачем из него читать, почему его может
> открыть кто-то еще?..
Иначе сложно о чем-то предполагать
← →
Riply © (2008-06-16 17:08) [22]> [20] Поросенок Винни-Пух © (16.06.08 17:00)
> .... и делаем это только когда программа запущена не дома
Ну почему же ? Один из многих вариантов реализации:
дома мы нажимаем кнопки программы в "правильной последовательности",
а не дома в "неправильной" :)
← →
ciborg (2008-06-16 17:10) [23]
> Milk (16.06.08 17:05) [21]
> Автор пока не ответил на главный вопрос:
> > clickmaker © (16.06.08 15:21) [5]
>
> > Что за файл, что и зачем из него читать, почему его может
>
> > открыть кто-то еще?..
> Иначе сложно о чем-то предполагать
Это текстовый файл, в котором я храню разную справочную информацию.
Я ошибся, я открываю его не для чтения, а для записи
vStream := TFileStream.Create(FileName, fmCreate);
vList := TStringList.Create;
try
for i := 0 to Count - 1 do
begin
...
vList.Add(vStr);
end;
vList.SaveToStream(vStream);
finally
vStream.Free;
vList.Free;
end;
← →
Поросенок Винни-Пух © (2008-06-16 17:11) [24]try
vStream := TFileStream.Create(FileName, fmCreate);
......
except
on E:Exception do ShowMEssage("ой, мама!"#13#10 + E.Message)
end
← →
ciborg (2008-06-16 17:14) [25]
> Поросенок Винни-Пух ©
Какая разница, все равно сообщение выдается.
← →
Поросенок Винни-Пух © (2008-06-16 17:14) [26]а ты чего хотел?
волшебства?
← →
Поросенок Винни-Пух © (2008-06-16 17:16) [27]vStream := TFileStream.Create(FileName, fmCreate);
и это для чтения время от времени некоторых данных?
← →
clickmaker © (2008-06-16 17:22) [28]> [25] ciborg (16.06.08 17:14)
значит, параллельно его пытается открыть либо второй экземпляр программы (либо она же в другом потоке), либо он открыт кем-то еще
чудес здесь не бывает
← →
Поросенок Винни-Пух © (2008-06-16 17:22) [29]автор парит мозг окружающим.
← →
ciborg (2008-06-16 17:39) [30]
> автор парит мозг окружающим.
Может и парю, но только по незнанию и в первую очередь себе.
← →
Поросенок Винни-Пух © (2008-06-16 17:41) [31]и что ты собрался читать из файла при таком раскладе:
vStream := TFileStream.Create(FileName, fmCreate);
← →
ciborg (2008-06-16 17:47) [32]Так я же сначала читаю из файла
vStream := TFileStream.Create(FileName, fmOpenRead);
vList := TStringList.Create;
try
vList.LoadFromStream(vStream);
vList.Sorted := False;
for i := vStartDict + 1 to vEndDict - 1 do
begin
...
Add(vWord);
end;
finally
vStream.Free;
vList.Free;
end;
изменяю данные, а уж потом записываю. Просто я посмотрел, что ошибка возникает при записи вот и выложил этот код.
← →
Поросенок Винни-Пух © (2008-06-16 17:50) [33]в общем так.
файл твой занят и это правда.
и на этом все.
← →
Поросенок Винни-Пух © (2008-06-16 18:04) [34]В других программах этот файл не открыт
остается своя собственная программа. она и виновата. она открыла.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.009 c