Як перевірити, що файл відкритий
onclose, onexception:
if Assigned (f) then //<- не работает
CloseFile (f)
Питання: як отримати покажчик на відкритий файл і упевнитися в тому, що файл відкритий?
Логіка коду повинна бути влаштована так, щоб CloseFile (f) не викликався, якщо AssignFile виконався з помилкою.
Якщо цього зробити зараз не можна - то або окремий прапорець зводити булевий при успішному відкритті файлу, або перед ClosaFile Стас # XA0; і роверять IOResult (а можна і не перевіряти, сенсу особливого немає)
AssignFile це не відкриття файлу
Перед відкриттям першого файлу, IntToStr (TTextRec (f) .Handle) = nil. Але після закриття вона <> nil, так що потрібно самостійно встановлювати.
> IntToStr (TTextRec (f) .Handle) = nil
TTextRec (f) .Handle = nil
if DeleteFile (filename) then
# XA0; ShowMessage ( "Файл був не відкритий");
А навіщо таке чудо треба? Ну перевірили, ну "не відкритий", намагаємося відкрити, а він уже й не дається.
AssignFile не може викликати помилку, якщо тип string
>
> TTextRec (f) .Handle = nil
так не працює
> AssignFile це не відкриття файлу
це зрозуміло
може краще відкривати, записувати і тут-же закривати?
або писати в стрігліст, а потім його скидати в # XA0; файл.
але якщо трапиться Фатал еррор, нічого не збережеться
А з якою "інтереси" може цікавити відкритий файл ким то чи ні?
Бажано, питання формулювати конкретніше.
Ви збираєтеся писАть в цей файл?
Чого-чого, лог звичайно.
with TTextRec (F) do
# XA0; if Mode = fmClosed then
# XA0; # XA0; закритий
> # XA0; як перевірити, що файл відкритий
>> |< (21.02.11 12:25)
Перевіряти відкритість файлу не треба _нікогда_.
Бо, зараз він відкритий, а через дестять колов
часу його може і, по-ще, # XA0, не бути.
> Бо, зараз він відкритий, а через дестять колов
> Часу його може і, по-ще, # XA0, не бути.
тут є один момент - відкритість файлу має сенс тільки по відношенню до програми :)
> Тут є один момент - відкритість файлу має сенс тільки
> По відношенню до програми
Точніше тут є один маячня. Нафіга потрібно перевіряти, чи відкритий вже файл твоєї власної програмою?