Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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
Мир не без добрых людей. Спасибо! |
|
Вернуться к началу |
|
|
chessplayer
Зарегистрирован: 01.03.2008 Сообщения: 10
|
Добавлено: Пн Май 12, 2008 10:13 pm Заголовок сообщения: |
|
|
И еще маленький вопрос.
Почему интересно в MapBasic нет возможности выделять массивы динамически и нет
указателей? |
|
Вернуться к началу |
|
|
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. |
|
Вернуться к началу |
|
|
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)
Чем не многомерный массив? |
|
Вернуться к началу |
|
|
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 ну и т.п.... |
|
Вернуться к началу |
|
|
|