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

Вниз

Наверное, не так ищу (о HFILE)   Найти похожие ветки 

 
ProgRAMmer Dimonych ©   (2007-12-18 16:07) [0]

Можно ли определить только по значению переменной типа HFILE, на какой файл она указывает: открытый или закрытый (неоткрытый)?

В MSDN заблудился, и близко не подкопавшись к истине, в справке по WinAPI ничего конкретного, похоже, нет.


 
clickmaker ©   (2007-12-18 16:09) [1]

попытаться открыть эксклюзивно?


 
DiamondShark ©   (2007-12-18 16:18) [2]

А откуда ты это значение берёшь?


 
ProgRAMmer Dimonych ©   (2007-12-18 16:19) [3]

> clickmaker ©   (18.12.07 16:09) [1]
> попытаться открыть эксклюзивно?

Всё, понял, я опять криво сформулировал вопрос :( А ведь даже не знаю, как кратко объяснить :)

Короче говоря, есть переменная F:HFILE. Она объявлена как поле в секции private в описании класса и используется как минимум в половине методов этого класса. И никогда нельзя гарантировать (мало ли чего бывает :)), что она, указывая на открытый программой файл, не попадётся ещё раз в функцию CreateFile(). Так вот: как определить, был ли файл уже открыт программой (о совместном доступе приложений речь не идёт)?


 
Юрий Зотов ©   (2007-12-18 16:24) [4]

1. Открытие и закрытие файла производить ТОЛЬКО в этом же классе.
2. При закрытии поле F обнулять.
3. Если поле F не равно нулю, то файл уже открыт.


 
ProgRAMmer Dimonych ©   (2007-12-18 16:30) [5]

> Юрий Зотов ©   (18.12.07 16:24) [4]
> 1. Открытие и закрытие файла производить ТОЛЬКО в этом же
> классе.
> 2. При закрытии поле F обнулять.
> 3. Если поле F не равно нулю, то файл уже открыт.

Пункт 1 был понятен сразу: я для этого работу с этим айлом в отдельный скласс и вынес. Вру, ещё не вынес, выношу :)

Пункты 2 и 3. Т.е. вероятность, что F будет равным 0 после открытия файла, равна нулю? Имею в виду: проблем при таком подходе возникать не будет?


 
clickmaker ©   (2007-12-18 16:35) [6]


> Т.е. вероятность, что F будет равным 0 после открытия файла,
> равна нулю?

да. При ошибке она будет INVALID_HANDLE_VALUE


 
DiamondShark ©   (2007-12-18 16:38) [7]

Лучше использовать INVALID_HANDLE_VALUE в качестве индикатора открытости/закрытости.

0 -- это может быть валидный хэндл.


 
ProgRAMmer Dimonych ©   (2007-12-18 17:10) [8]

Всем спасибо.


 
Плохиш ©   (2007-12-18 17:13) [9]


> ProgRAMmer Dimonych ©   (18.12.07 16:19) [3]


> Она объявлена как поле в секции private в описании класса

Ну и что ты к ней привязался, не твоя это переменная, не твоя...



Страницы: 1 вся ветка

Текущий архив: 2008.01.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
15-1197488574
Kerk
2007-12-12 22:42
2008.01.20
В Чип и Дип можно купить лазер, способный убить муху с 3х метров?


2-1197996711
new_user )
2007-12-18 19:51
2008.01.20
недопонимаю...


2-1197950727
Sergiu
2007-12-18 07:05
2008.01.20
Как считывать данные с COM,LPT порта и нарисовать график


2-1198409048
НОВ
2007-12-23 14:24
2008.01.20
Turbo Delphi Нужна помощь


2-1197962651
Бакук
2007-12-18 10:24
2008.01.20
DLL и поток