Удалитьфайл

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Здравствуйте (Hello) clalist,

c6.1 ABC TPS XP
Имею Source В таблице к ней описан AST.tps
Пишу ручками вначале удаление
run('CMD.EXE /C DEL D:\ast.TPS')
однажды сработало, но чаще выдает типа занят файл процессом ??
Что, если он описан в Table, то уже занят пока не выйдешь с этого Source??

--
С уважением,
Талгат mailto:talgat@omsknet.ru
(г.Омск)
Написал: ClaList(2)
Гость

Сообщение Гость »

Привет!

1. F1 -> Remove
2. ErrorCode()?
3. После твоего Run ошибку проверять бесполезно.

Александр Агеев (aageev@satren.ru)
Написал: ClaList(2)
Гость

Сообщение Гость »

Здравствуйте, Талгат!

Я, конечно, не дам ответа прямо на вопрос, но могу посоветовать, если меня не поправят потом коллеги из ClaList:
1. Если вы открываете \закрываете этот файл, то проверить, чтобы на момент удаления файл был закрыт. И еще надо бы проверить, не занимает ли этот файл еще какой-нибудь процесс приложения.
2. Почему бы не использовать для удаления апишную функцию:
В GLOBAL: Inside The Global Map указать

Код: Выделить всё

MODULE('Windows API')
 DeleteFile       (*CSTRING lpFileName), BOOL, RAW, PASCAL, PROC, NAME('DeleteFileA')
END
а Source-процедуре перед открытием файла:

Код: Выделить всё

     GLO:DeleteFile = <Файл>
     IF FileExists(GLO:DeleteFile) ! Проверка на существование
        IF ~DeleteFile(GLO:DeleteFile)
           MESSAGE ('Ошибка удаления ' & GLO:DeleteFile,'Ошибка',ICON:Hand)
           RETURN
        END
     END
FileExists из поставки C6 (cwutil.clw) или можно использовать процедуру EXISTS (читай доку).

С уважением, Семен Попов
Написал: ClaList(2)
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

Сообщение Aragorn »

Я может, чего-то не понял... но у меня нет проблем с таким удалением:

Код: Выделить всё

!---это только если мы не уверены, что файл закрыт
Loop
   If Status(file) <> 0 Then Access.File.Close()
   Else Break
End
!---А теперь удаление
Remove(File)
If ErrorCode() <> 0 And ErrorCode() <> 2 Then сообщение об ошибке End
Очень даже миленько работает :)
Написал: Aragorn(147)
Ответить