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

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

как проверить, что файл открыт


>|< ©   (2011-02-21 12:25:00) 

var f:text

oncreate:
AssignFile(f, ...)

onclose, onexception:
if Assigned(f) then //<- не работает
CloseFile(f)

Вопрос: как получить указатель на открытый файл и удостовериться в том, что файл открыт?


Palladin   (2011-02-22 14:36:00) [1]

ну вдруг забыл


Германн   (2011-02-22 02:41:00) [2]


> тут есть один момент - открытость файла имеет смысл только
> по отношению к программе

Точнее тут есть один бред. Нафига нужно проверять открыт ли уже файл твоей собственной программой?


Игорь Шевченко   (2011-02-21 23:00:00) [3]


> Бо, сейчас он открыт, а через дестять колов
> времени его может и, во-ще,  не быть.


тут есть один момент - открытость файла имеет смысл только по отношению к программе :)


Leonid Troyanovsky   (2011-02-21 21:51:00) [4]


>  как проверить, что файл открыт

> >|<   (21.02.11 12:25)  

Проверять открытость файла не надо _никогда_.

Бо, сейчас он открыт, а через дестять колов
времени его может и, во-ще,  не быть.

--
Regards, LVT.


&gt;|&lt;   (2011-02-21 18:56:00) [5]


> Игорь Шевченко ©   (21.02.11 18:33) [12]

респект и уважуха!


Игорь Шевченко   (2011-02-21 18:33:00) [6]


> так не работает


with TTextRec(F) do
 if Mode = fmClosed then
   закрыт


Dennis I. Komarov   (2011-02-21 15:39:00) [7]

Чего-чего, лог конечно.


Smile   (2011-02-21 15:34:00) [8]

А с какой "интересы" может интересовать открыт файл кем то или нет?
Желательно, вопросы формулировать конкретней.
Вы собираетесь писАть в этот файл?


&gt;|&lt;   (2011-02-21 15:28:00) [9]


>
> TTextRec(f).Handle = nil

так не работает


> AssignFile это не открытие файла

это понятно

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


Anatoly Podgoretsky   (2011-02-21 14:38:00) [10]

> Dennis I. Komarov  (21.02.2011 13:06:05)  [5]

Вечная память


Anatoly Podgoretsky   (2011-02-21 14:38:00) [11]

> KSergey  (21.02.2011 12:55:01)  [1]

AssignFile не может вызвать ошибку, если тип string


Dennis I. Komarov   (2011-02-21 13:11:00) [12]

А зачем такое чудо надо? Ну проверили, ну "не открыт", пытаемся открыть, а он уже и не дается...


Dennis I. Komarov   (2011-02-21 13:06:00) [13]

if DeleteFile(filename) then
 ShowMessage('Файл был не открыт');


И. Павел   (2011-02-21 12:57:00) [14]

> IntToStr(TTextRec(f).Handle) = nil

TTextRec(f).Handle = nil


И. Павел   (2011-02-21 12:56:00) [15]

Перед открытием первого файла, IntToStr(TTextRec(f).Handle) = nil. Но после закрытия она <> nil, так что нужно самостоятельно устанавливать.


KSergey   (2011-02-21 12:55:00) [16]

Логика кода должна быть устроена так, чтобы CloseFile(f) не вызывался, если AssignFile выполнился с ошибкой.

Если этого сделать сейчас нельзя - то либо отдельный флажок взводить булевый при успешном открытии файла, либо перед ClosaFile стасить  {$I-} и роверять IOResult (а можно и не проверять, смысла особого нет)


Palladin   (2011-02-21 12:55:00) [17]

AssignFile это не открытие файла


Наверх

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