2013-07-04 6 views
0

У меня есть небольшое приложение, в котором хранятся его настройки в INI-файле. Когда открывается другая форма, я закрываю дескриптор файла INI:Проверьте, что дескриптор IniFile открыт

procedure TIndexForm.startButtonClick(Sender: TObject); 
var 
    workForm : TForm; 
begin 

    workForm := TworkingForm.Create(nil); 
    workForm.Show(); 

    configIni.Free; // freeing IniFile desciptor 
    IndexForm.Hide(); 

end; 

И как я могу проверить дескриптор, все еще открыт? Как это (код не работает):

if not Assigned configIni then 
    configIni := TIniFile.Create(configPath); 

Заранее спасибо.

+1

Почему бы просто не получить доступ к файлу INI по мере необходимости? т.е. просто создавать/освобождать достаточно долго, чтобы читать/писать, а не держать его открытым все время? – Jason

+4

'Assigned' проверяет, нет ли указателя, поэтому, когда вы освобождаете переменную' configIni', вы также должны установить значение в nil. – RRUZ

ответ

3

Вы можете использовать Assigned, но он не проверяет, ссылается ли переменная на действительный экземпляр объекта. Ничего не делает. Скорее, Assigned просто проверяет, равна ли переменная. Для того, чтобы сделать что действительный чек, сделать ваш переменный нуль, когда вы освобождаете объект это относится к:

configIni.Free; 
configIni := nil; 

Вы можете использовать функцию FreeAndNil помощника, если вы хотите; он делает немного больше, чем то, что я написал выше.

Смежные вопросы