Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.007 c
2-1213267781
Rustam
2008-06-12 14:49
2008.07.13
чтение из файла


15-1211861704
vajo
2008-05-27 08:15
2008.07.13
как в меню проводника отключаеся "Свойства папки..."?


2-1213386637
MaryM
2008-06-13 23:50
2008.07.13
SynEdit и Delphi 2007


2-1213595941
TForumHelp
2008-06-16 09:59
2008.07.13
TPageControl


3-1201867497
Quart
2008-02-01 15:04
2008.07.13
Access через Tdatabase





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский