Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.13;
Скачать: CL | DM;

Вниз

Файл занят другим процессом   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.021 c
15-1210961167
@!!ex
2008-05-16 22:06
2008.07.13
Как писать на С++, а не на Дельфи?


2-1213185672
snake-as
2008-06-11 16:01
2008.07.13
Просто удалить запись


2-1213096465
Анонимщики
2008-06-10 15:14
2008.07.13
WaitFor


15-1211815645
Tualatin
2008-05-26 19:27
2008.07.13
файл ресурса (где картинки jpg)


15-1211832869
Nic
2008-05-27 00:14
2008.07.13
adobe acrobat reader 64 bit