![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файл занят другим приложением
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]потому что после успешной проверки и перед открытием никто не гарантирует, что он снова не будет занят другим процессом