Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Файл занят другим приложением


Страницы:   1 2

ciborg ©   (2008-06-09 14:10:00) 

Я хочу открыть файл. При этом он может быть занят другим приложением, при открытии выдается ошибка. Как мне проверить занят ли он и если занят, то подождать определенное время, и если за это время он не освободится, то выдать ошибку?


Anatoly Podgoretsky   (2008-06-09 22:06:00) [1]

Пусть автор поговорит, вы то зачем ругаетесь?


Тын-Дын   (2008-06-09 21:23:00) [2]


> Тут кто-то цитировал правила конференции о том, что нефигово
> бы вежливыми быть.


А посмотри в предыдущем посте про горе-программера?


Игорь Шевченко   (2008-06-09 21:18:00) [3]


> Или не читал ветку?
> Тогда не след соваться в разговор.


Тут кто-то цитировал правила конференции о том, что нефигово бы вежливыми быть.


Тын-Дын   (2008-06-09 21:14:00) [4]


> tesseract ©   (09.06.08 21:04) [20]
> > Например, просмотр протокола другой программы в real-time.
> > ..А другая программа даёт тебе на это право ? Может она
> эксклюзивно для себя логи держит ?


Может быть. И что?


> Или такой же горе-программер этой софтины про FILE_SHARE_READ
> не слышал.


Может быть такой же горе-читатель не понимает, о чем разговор? Или не читал ветку?
Тогда не след соваться в разговор.

PS.
Ответ был на [17]
Если решишь прочитать ветку, то промотни до этого поста.


tesseract   (2008-06-09 21:04:00) [5]


> Например, просмотр протокола другой программы в real-time.
> ..


А другая программа даёт тебе на это право ? Может она эксклюзивно для себя логи держит ? Или такой же горе-программер этой софтины про FILE_SHARE_READ не слышал.


Игорь Шевченко   (2008-06-09 20:52:00) [6]


> Например, просмотр протокола другой программы в real-time.
> ..


Это сильно зависит от того, как этот протокол пишется и в общем случае задача выглядит бредово, потому что протокол с незакрытием файла после записи или без сброса буферов пуст, как бутылка пива, стоящая слева от меня.

Почему в линуксе такое странное расположение знаков препинания по умолчанию...


Тын-Дын   (2008-06-09 20:14:00) [7]


> Игорь Шевченко ©   (09.06.08 17:19) [17]
> > Как зачем? Чтобы получить данные из этих файловЗачем нужны
> данные из файлов, открытых другими приложениями ? Это нонсенс


Например, просмотр протокола другой программы в real-time...


Игорь Шевченко   (2008-06-09 17:19:00) [8]


> Как зачем? Чтобы получить данные из этих файлов


Зачем нужны данные из файлов, открытых другими приложениями ? Это нонсенс


ciborg   (2008-06-09 17:14:00) [9]


> Игорь Шевченко ©   (09.06.08 15:49) [15]
> А звчем вообще открывать файлы, занятые другими приложениями
> ?


Как зачем? Чтобы получить данные из этих файлов.


Игорь Шевченко   (2008-06-09 15:49:00) [10]

А звчем вообще открывать файлы, занятые другими приложениями ?


ciborg   (2008-06-09 15:49:00) [11]

круто


Поросенок Винни-Пух   (2008-06-09 15:41:00) [12]

Тагда уж что-то типа такого

const
maxcnt = 360; //Ждем 6 минут максимум

type TMyCallBack = procedure (F : File);

function CheckFileExclusive(ACallback : TMyCallback) : boolean
var
fd: Integer;
ofs: _OFSTRUCT;
err: DWORD;
cnt: Integer;
begin
result := False;
cnt := 0;
repeat
 Inc(cnt);
 FillChar(ofs, SizeOf(ofs), 0);
 ofs.cBytes := SizeOf(ofs);
 fd := OpenFile(PChar(FileName), ofs, OF_SHARE_EXCLUSIVE);
 err := GetLastError;
 if err <> ERROR_SHARING_VIOLATION then
   begin
    Result := True;
    Break;
   end;
 Sleep(1000);
until cnt >= maxcnt;

if Result and Assigned(ACallback) then ACallback(fd);

CloseHandle(fd);
if err <> ERROR_SUCCESS then
 raise Exception.Create(SysErrorMessage(err))
end;


Тын-Дын   (2008-06-09 15:27:00) [13]


> Поросенок Винни-Пух ©   (09.06.08 15:22) [11]
> он щас тот кусок скопирует, оформит в функцию и будет думать,
>  что поймал судьбу за что-то.


Угу, а некоторые будут комментировать то, чего нет.


Поросенок Винни-Пух   (2008-06-09 15:22:00) [14]

он щас тот кусок скопирует, оформит в функцию и будет думать, что поймал судьбу за что-то.


Anatoly Podgoretsky   (2008-06-09 15:20:00) [15]

> Palladin  (09.06.2008 15:10:08)  [8]

Есть и тебе даже привели готовый код.


Поросенок Винни-Пух   (2008-06-09 15:19:00) [16]

которая проверяет занят файл или нет и после этого сразуже блокирует его, если свободен.

читай снова про мороженное.
нету в природе такого "сразужеблокирует".
после проверки надо снова "зимой в гору за пять километров ...."


Palladin   (2008-06-09 15:10:00) [17]

конечно есть и ты ее узнаешь, если внимательно прочитаешь все буковки на этой страничке


ciborg   (2008-06-09 15:08:00) [18]


> Поросенок Винни-Пух ©   (09.06.08 14:19) [5]
> потому что после успешной проверки и перед открытием никто
> не гарантирует, что он снова не будет занят другим процессом


Ну так может быть есть функция, которая проверяет занят файл или нет и после этого сразуже блокирует его, если свободен.


Поросенок Винни-Пух   (2008-06-09 14:25:00) [19]

- папа, дай денег на мороженное.
- дам, только сначала сходи в магазин, посмотри, что там оно есть.

(идешь зимой в гору за пять км в магазин, убеждаеешься, что мороженное есть, возвращаешься к папе)

- папа, мороженное есть!
- на, держи.

(идешь зимой в гору за пять км в магазин, убеждаеешься, что все мороженное раскупили, возвращаешься к папе усталый, но уже мудрый)


Поросенок Винни-Пух   (2008-06-09 14:19:00) [20]

потому что после успешной проверки и перед открытием никто не гарантирует, что он снова не будет занят другим процессом


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо