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