Создание папки MB

MapInfo, MapBasic
Ответить
Dartix
Участник
Сообщения: 78
Зарегистрирован: 05 апр 2014, 17:13
Репутация: 5

Создание папки MB

Сообщение Dartix » 23 авг 2022, 07:50

Добрый день!
Как через MapBasic можно создать/удалить папку в указанном месте?

Аватара пользователя
MI user
Участник
Сообщения: 63
Зарегистрирован: 14 янв 2013, 17:08
Репутация: 33
Откуда: Оренбург

Re: Создание папки MB

Сообщение MI user » 24 авг 2022, 06:08

Лично мне метод не нравится, но он работает:

1) В начале программы импортируем функцию Windows API:

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

Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Integer)
2) Папку создаём с помощью вызова команды:

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

Run Program "cmd /q /c md """ + WorkDir + """"
3) Так как папка создаётся асинхронно - нужно подождать некоторое время, пока она станет доступна в программе MapBasic:

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

Call Sleep(1000)

Dartix
Участник
Сообщения: 78
Зарегистрирован: 05 апр 2014, 17:13
Репутация: 5

Re: Создание папки MB

Сообщение Dartix » 24 авг 2022, 12:43

Спасибо!

gamm
Гуру
Сообщения: 4044
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1049
Ваше звание: программист
Откуда: Казань

Re: Создание папки MB

Сообщение gamm » 24 авг 2022, 18:02

а вызов точно асинхронный? обычно есть управление ждать/не ждать, но в Мапвасике не нашел ...

Аватара пользователя
MI user
Участник
Сообщения: 63
Зарегистрирован: 14 янв 2013, 17:08
Репутация: 33
Откуда: Оренбург

Re: Создание папки MB

Сообщение MI user » 24 авг 2022, 19:34

gamm писал(а):
24 авг 2022, 18:02
а вызов точно асинхронный
Из MapBasic вызывается стандартная команда Windows на создание папки - "md". Следовательно, в программе на MapBasic мы не сможем узнать результат выполнения команды создано/не создано. Поэтому просто тупо ждём 1 секунду.

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя