Як перевірити, що файл відкритий

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, не бути.

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


> Тут є один момент - відкритість файлу має сенс тільки
> По відношенню до програми

Точніше тут є один маячня. Нафіга потрібно перевіряти, чи відкритий вже файл твоєї власної програмою?