Форум » [x]Harbour » Что использовать вместо FERASE() » Ответить

Что использовать вместо FERASE()

Лукашевский: Потому что под NTями он работает некорректно (по крайней мере в Clipper'е): файл рушится, даже если он открыт на чтение и запись другой программой. Реальная ситуация: на сервере индекс открыт программой, работающей на компьютере-клиенте, а FERASE() в программе, работающей на сервере, его запросто убивает. Текст у меня общий для Clipper'а и xHarbour'а, поэтому хочется какой-либо одной функцией воспользоваться.

Ответов - 4

Dima: я конечно не знаю специфики твоей программы , но наверное проще будет если клиентская программа будет принимать решение , удалять файл или нет. если речь о сетевой программе тогда зачем удалять файлы используемые совместно по сети. если речь о временных клиентских файлах , тогда создавай их локально и убивай клиентской частью программы.

SergeJa: FUNC myFErase( cF ) LOCAL nH := FOpen( cF, FO_EXCLUSIVE ) If nH = -1 // Фикс для XP, умеющей удалять открытые файлы RETURN -1 Else FClose(nH) EndIF RETURN FErase( cF )

Лукашевский: Dima пишет: зачем удалять файлы используемые совместно по сети Dima, программа на сервере каждую загрузку пересоздаёт один или несколько индексов, в качестве борьбы с их периодическим обрушением в Clipper'е. И если на клиенте запустили программу раньше, чем на сервере, то получается вышеописанная бяка. А попытка удаления индексного файла как раз и показывала (до XP :-( можно ли пересоздать этот индекс (если файл спокойно удаляется - то можно)...


Лукашевский: SergeJa пишет: FUNC myFErase( cF ) Спасибо, попробую.



полная версия страницы