![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Наверное, не так ищу (о HFILE)
ProgRAMmer Dimonych © (2007-12-18 16:07:00)Можно ли определить только по значению переменной типа HFILE, на какой файл она указывает: открытый или закрытый (неоткрытый)?
В MSDN заблудился, и близко не подкопавшись к истине, в справке по WinAPI ничего конкретного, похоже, нет.
Плохиш (2007-12-18 17:13:00) [1]
> ProgRAMmer Dimonych © (18.12.07 16:19) [3]
> Она объявлена как поле в секции privateв описании класса
Ну и что ты к ней привязался, не твоя это переменная, не твоя...
ProgRAMmer Dimonych (2007-12-18 17:10:00) [2]Всем спасибо.
DiamondShark (2007-12-18 16:38:00) [3]Лучше использовать INVALID_HANDLE_VALUE в качестве индикатора открытости/закрытости.
0 -- это может быть валидный хэндл.
clickmaker (2007-12-18 16:35:00) [4]
> Т.е. вероятность, что F будет равным 0 после открытия файла,
> равна нулю?
да. При ошибке она будет INVALID_HANDLE_VALUE
ProgRAMmer Dimonych (2007-12-18 16:30:00) [5]> Юрий Зотов © (18.12.07 16:24) [4]
> 1. Открытие и закрытие файла производить ТОЛЬКО в этом же
> классе.
> 2. При закрытии поле F обнулять.
> 3. Если поле F не равно нулю, то файл уже открыт.
Пункт 1 был понятен сразу: я для этого работу с этим айлом в отдельный скласс и вынес. Вру, ещё не вынес, выношу :)
Пункты 2 и 3. Т.е. вероятность, что F будет равным 0 после открытия файла, равна нулю? Имею в виду: проблем при таком подходе возникать не будет?
Юрий Зотов (2007-12-18 16:24:00) [6]1. Открытие и закрытие файла производить ТОЛЬКО в этом же классе.
2. При закрытии поле F обнулять.
3. Если поле F не равно нулю, то файл уже открыт.
ProgRAMmer Dimonych (2007-12-18 16:19:00) [7]> clickmaker © (18.12.07 16:09) [1]
> попытаться открыть эксклюзивно?
Всё, понял, я опять криво сформулировал вопрос :( А ведь даже не знаю, как кратко объяснить :)
Короче говоря, есть переменнаяF:HFILE. Она объявлена как поле в секцииprivateв описании класса и используется как минимум в половине методов этого класса. И никогда нельзя гарантировать (мало ли чего бывает :)), что она, указывая на открытый программой файл, не попадётся ещё раз в функцию CreateFile(). Так вот: как определить, был ли файл уже открыт программой (о совместном доступе приложений речь не идёт)?
DiamondShark (2007-12-18 16:18:00) [8]А откуда ты это значение берёшь?
clickmaker (2007-12-18 16:09:00) [9]попытаться открыть эксклюзивно?