С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
-5 / 1 / 1
Регистрация: 10.11.2011
Сообщений: 24

Запуск приложения на MapBasic из С++ Builder с передачей параметров

14.11.2011, 16:14. Показов 2280. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Хочу запустить из С++ Builder приложение, написанное на MapBasic: .mbx, с передачей в MapBasic
имени файла, с которым должен работать MapBasic. Имя файла получаю в Builder-e через диалоговое
окно.
Собиралась использовать следующий код:
C++
1
spawnlp(P_WAIT,"1.MBX","1.MBX","FileName.tab",NULL);
Допустим, я таким образом передам имя файла: "FileName.tab", а как принять этот параметр в
MapBasic?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.11.2011, 16:14
Ответы с готовыми решениями:

Запуск программы с передачей параметров
Добрый вечер. Подскажите кто знает, у меня есть BAT файл следующего содержания: Pk2RDF.exe 070211old.001 RDF.rdf PKV2.ini...

Запуск приложения на другом компьютере, где не установлен c++ builder
Здравствуйте! У меня такой вопрос создал проект на своем компьютере с помощью c++ builder XE5. Скидываю проект на другой комп, где нет c++...

Запуск процесса с передачей параметров
Здравствуйте. Требуется запустить некий процесс proc несколько раз. И передать ему 2 параметра. Но эти параметры это переменные. как...

4
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
14.11.2011, 17:06
что нужно прописать в cmd, чтобы запустить MapBasic и чтобы он открыл то, что нужно?
0
-5 / 1 / 1
Регистрация: 10.11.2011
Сообщений: 24
16.11.2011, 15:29  [ТС]
Цитата Сообщение от kzru_hunter Посмотреть сообщение
что нужно прописать в cmd, чтобы запустить MapBasic и чтобы он открыл то, что нужно?
В cmd достаточно просто зайти в директорию, где лежит исполняемый файл MapBasic: .mbx
Ввести имя файла и он запускается.

Добавлено через 18 минут
C++
1
2
3
4
5
AnsiString ProjectFileDir =  ExtractFilePath(Application->ExeName);
AnsiString Temp_path = ExtractFilePath(Application->ExeName)+"Temp.txt";
AnsiString mbx_file;
mbx_file = "Import.MBX";
ShellExecute(NULL, "open", mbx_file.c_str(), NULL, ProjectFileDir.c_str() , SW_SHOWNORMAL);
С помощью ShellExecute у меня получилось запустить MapBasic: .mbx файл.
Чтобы передать в MapBasic пути к файлам, которые получаю в С++ Builder я попробовала 2 варианта:
1. Сохранила пути в отдельный текстовый файл и пробовала читать их в MapBasic.
Тут всё было бы хорошо, но MapBasic не может считать нормально русские символы, записанные из С++ Builder: вместо "C:\Documents and Settings\Рабочий стол\" считывает "C:\Documents and Settings\Кракозябры\", следовательно ошибка "Не возможно найти файл C:\Documents and Settings\Кракозябры\".
Пробовала перевести строки перед тем как записать их в файл в Win1251, не получилось, русские символы перевелись как пусто.
2. Настроить DDE соединение в MapBasic:
PureBasic
1
2
i_chan_num = DDEInitiate("Project1","c:\Documents and Settings\RamazanovaGR\Рабочий стол\Все\Конвертр\Convert to Mif\Project1.exe") ' i_chan_num - номер канала связи
s_fname_copy = DDERequest$(i_chan_num, "full_FName") ' считывание переменной из С++ Builder, объявленной там глобально
Тут проблема: не работает 1-ая строка, где определяется номер канала связи: DDEInitiate( appl_name , topic_name ). Выводит ошибку: "Программа не отвечает".
Наверное потому, что указываю неправильные значения appl_name - имя приложения, в нашем случае C++ Builder, и topic_name - имя темы.
Например для Excel надо писать: chan_num = DDEInitiate("EXCEL", "System")
topic_name = "System" , если Excel уже открыт, на сколько я понимаю.

Вот и не знаю пока что с этим делать.

Добавлено через 36 минут
Цитата Сообщение от Softina Посмотреть сообщение
В cmd достаточно просто зайти в директорию, где лежит исполняемый файл MapBasic: .mbx
Ввести имя файла и он запускается.

Добавлено через 18 минут
C++
1
2
3
4
5
AnsiString ProjectFileDir =  ExtractFilePath(Application->ExeName);
AnsiString Temp_path = ExtractFilePath(Application->ExeName)+"Temp.txt";
AnsiString mbx_file;
mbx_file = "Import.MBX";
ShellExecute(NULL, "open", mbx_file.c_str(), NULL, ProjectFileDir.c_str() , SW_SHOWNORMAL);
С помощью ShellExecute у меня получилось запустить MapBasic: .mbx файл.
Чтобы передать в MapBasic пути к файлам, которые получаю в С++ Builder я попробовала 2 варианта:
1. Сохранила пути в отдельный текстовый файл и пробовала читать их в MapBasic.
Тут всё было бы хорошо, но MapBasic не может считать нормально русские символы, записанные из С++ Builder: вместо "C:\Documents and Settings\Рабочий стол\" считывает "C:\Documents and Settings\Кракозябры\", следовательно ошибка "Не возможно найти файл C:\Documents and Settings\Кракозябры\".
Пробовала перевести строки перед тем как записать их в файл в Win1251, не получилось, русские символы перевелись как пусто.
Проблема с кракозябрами при чтении файла из MapBasic решилась одной строкой:
PureBasic
1
2
Open File sTempPath For INPUT As #1 ' открыли файл для чтения
CharSet SystemInfo( SYS_INFO_CHARSET ) ' задали кодировку
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
16.11.2011, 15:30
я так и не понял, в чем проблема.
но приведу пример и напишу, на что надо обращать внимание:
C++
1
WinExec("\"C:\\MapBasic\\1.mbx\" \"D:\\Map Basic File\\FileName.tab\"", SW_SHOWNORMAL);
из кода видно, что вместо одного слеша нужно ставить два.
пути до файлов нужно заключать в кавычки специальным образом (\").
0
-5 / 1 / 1
Регистрация: 10.11.2011
Сообщений: 24
16.11.2011, 15:56  [ТС]
Цитата Сообщение от kzru_hunter Посмотреть сообщение
я так и не понял, в чем проблема.
Проблема была в том, как в MapBasic принять переданный параметр: путь к файлу и работать с ним.
Не отрицаю, могу писать не очень понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2011, 15:56
Помогаю со студенческими работами здесь

Запуск процедуры по имени с передачей ей параметров
Хочу запускать процедуру по ее имени с передачей ей параметров Пробую в Excel : метод App.Evaluate - вызывает двойное срабатывание...

Запуск пограмной строкой с передачей параметров
Подскажите пожалуста, как в Delphi, реализовать запуск приложения из коммандной строки. Передаются некие парамнтры в стандартном виде...

Вызов приложения с передачей параметров
Dobriy den'!! Mne nujno vizvat' prilojenie i peredat' emu parametri iz moyey progi. Kak eto sdelat' м C# ?

Запуск консоли из bat с передачей нескольких параметров в консоль
Собственно нужно запустить консоль из батника с параметром "/K" (т.е. после выполнения команд консоль должна остаться) и передать в консоль...

Запуск другого приложения и передача параметров
Здравствуйте, вопрос по поводу работы 2 программ Есть готовое консольное приложение X, которое можно запустить и передать параметр,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru