www.map-info.ru :: Просмотр темы - C++, OLE и DDE, MapBasic
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
doctor



Зарегистрирован: 11.05.2008
Сообщения: 2

СообщениеДобавлено: Вс Май 11, 2008 1:13 pm    Заголовок сообщения: C++, OLE и DDE, MapBasic Добавить ответ со ссылкой на данный текст

Реализация взаимодействия двух приложений написанных на С++ и MapBasic. Причем без создания промежуточных файлов. А именно передача массивов. нужно из приложения написанного на MapBasic передать в приложение C++ параметры для выборки данных в БД. Какими средствами это можно реализовать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
chessplayer



Зарегистрирован: 01.03.2008
Сообщения: 10

СообщениеДобавлено: Пн Май 12, 2008 9:41 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Ситуация следующая.

Приложение, написанное на языке C++, вырабатывает целочисленный массив. Требуется
передать этот массив приложению, написанному на языке MapBasic. Передача должна
осуществляться напрямую, т.е. без создания промежуточных данных на дисковом
накопителе. Возможно, этого можно достичь с использованием DDE.

Не найдется ли у кого-нибудь пример разрешающий подобную задачу?
Пусть это будут даже сырые исходники, главное понять идею. Материалы можно выслать
на почтовый ящик landwatersun@mail.ru

Мир не без добрых людей. Спасибо!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
chessplayer



Зарегистрирован: 01.03.2008
Сообщения: 10

СообщениеДобавлено: Пн Май 12, 2008 10:13 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

И еще маленький вопрос.

Почему интересно в MapBasic нет возможности выделять массивы динамически и нет
указателей?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
dimaz



Зарегистрирован: 09.07.2007
Сообщения: 8

СообщениеДобавлено: Чт Май 15, 2008 5:54 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

DDE - зло. Достаточно сказать, что через DDE можно связаться только с последним открытым окном (экземпляром) MapInfo. Я не думаю, что такой вариант вас устроит.
Не понимаю, почему нельзя использовать временные файлы. Вы хотите, чтобы программа работала на компе без жесткого диска?
Вы уверены, что нужно связать две разных программы? Может достаточно будет вызова из mbx функций DLL, написанной на C++? Я, например, частенько вызываю из MapBasic код, созданный в Delphi. Это удобно и массивы, кстати, передавать можно.
Кстати, в MapBasic есть динамические массивы (Объявляем: dim ai() as integer, меняем размерность: reDim ai(100)). Указателей нет, но есть структуры и их можно передавать в функции. Зачем еще вам указатели?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
chessplayer



Зарегистрирован: 01.03.2008
Сообщения: 10

СообщениеДобавлено: Чт Май 15, 2008 3:30 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Добрый вечер dimaz!

Спасибо за ответ. Но, не мог бы ты прислать на почтовый ящик показательный пример,
как передать массив из dll в MapBasic или выложить его на этом форуме? Можно и на
Delphi.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
zzzio



Зарегистрирован: 20.04.2008
Сообщения: 24

СообщениеДобавлено: Чт Май 15, 2008 8:10 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

А мне всегда было интересно, почему в мапбасике не реализованы многомерные массивы :shock: Не расскажете кто как обходит это неудобство
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Пт Май 16, 2008 1:19 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Явных многомерных массивов - нет. Но их запросто можно сэмулировать через определение своих типов:

Type ArrayOfPoints
Points(0) As Point
End Type

Type ArrayOfPolygons
P(0) As ArrayOfPoints
End Type

Global _Objects(0) As ArrayOfPolygons

Обращение:
_Objects(i).P(j).Points(k)

Чем не многомерный массив?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
zzzio



Зарегистрирован: 20.04.2008
Сообщения: 24

СообщениеДобавлено: Пт Май 16, 2008 10:34 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Так и приходится поступать, но ведь было бы намного легче просто P(i,j,k), не так ли? :wink:
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Ср Июн 25, 2008 2:40 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Вопрос состоял в чтении/записи массивов из внешнего приложения.
Так вот, насколько я выяснил опытным путем, читать/писать массивы в Mapinfo через com (dde) невозможно. остаются старые проверенные способы: внешние промежуточные файлы, запись значений в таблицу Mapinfo (благо легко делается MIAPplication.do('create table...') и соответствующие 'Insert into...') ну и вариант передачи значений через RemoteMsgHandler приложения MapBasic ну и т.п....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru