powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Под ON ERROR - не LOOPится :((
4 сообщений из 4, страница 1 из 1
Под ON ERROR - не LOOPится :((
    #34481738
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я в 3 соснах заблудился :((
Как заставить сработать LOOP в следующей ситуации.
В переменной asd содержится список файлов (с путями), подлежащих удалению. В качестве разделителя используется символ ‘#’. Если ни один из этих файлов не заблокирован, то все проходит гладко. А если хоть один занят каким-нибудь процессом, то надо перейти к следующему в списке файлу, т.е. – сделать простой LOOP. Но он под управлением команды ON ERROR делаться не хочет:

asd=”#C:\TEMP\file1.txt# C:\UPR\file2.mvb# C:\MP123\file3.zxc” && и т.д – список длинный.
for i=1 to occurs(‘#’,asd)
&& Выбор очередного имени файла из asd
dsa=substr(asd,at(‘#’,asd,i)+1,iif(i<occurs(‘#’,asd),at(‘#’,asd,i+1)-at(‘#’,asd,i)-1,len(asd)))
&& Тепер удаляем
on error LOOP && Вызывает ошибку в операторе удаления, если удаляемый файл - занят
if file(dsa)
erase &dsa
endif
endfor

Как сLOOPить в данной ситуации? :))
...
Рейтинг: 0 / 0
Под ON ERROR - не LOOPится :((
    #34481743
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще забыл одно. Список файлов обязательно должен содержаться в переменной, т.е., если бы можно было бы держать его в dbf-нике, я бы смог обойти эту проблему.
...
Рейтинг: 0 / 0
Под ON ERROR - не LOOPится :((
    #34482038
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем вообще что-то делать в событии ON ERROR? После ошибки ведь и так код пойдет выполняться дальше. Просто подави выдачу сообщения об ошибке. Ну, или присвой значение флагу, если после команды удаления там что-то есть еще

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
LOCAL isError
ON ERROR isError = .T.

FOR ...
isError = .F.
...
DELETE FILE (m.dsa)
IF isError = .T.
	LOOP
ENDIF
...
ENDFOR

И, кстати, какая версия FoxPro? Начиная с VFP8 есть TRY...CATCH как раз для подобных локальных ошибок. А разбор строки проще сделать через ALINES() (введена с VFP6)
...
Рейтинг: 0 / 0
Под ON ERROR - не LOOPится :((
    #34482296
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To ВладимирМ:
Видать, я вчера перетрудился и зациклился... Сегодня утром пришел к тому же выводу:
" После ошибки ведь и так код пойдет выполняться дальше "
А вот за ALINES() - спасибо, я и вправду как-то на эту функцию не обратил внимания.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Под ON ERROR - не LOOPится :((
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]