![Фотография](https://vse.kz/uploads/av-135864.jpg?_r=0)
MapBasic и все что с ним связаноМожет я не один такой?!
#102
Отправлено 10.06.2009, 10:06:00
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Если честно не понял вопроса.Есть вопросец господа!
Как воспользоваться DotNet'овской функцией передающей массив в качестве параметра в программе на MB? Если можно то пример плиз!
.NET-овская функция принимающая массив в качестве параметра?
из МB вызываем как? пример пожалуйста
Сообщение отредактировал swatch: 10.06.2009, 10:08:12
#108
Отправлено 10.06.2009, 11:02:19
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
![:rotate:](http://vse.kz/public/style_emoticons/default/smile.gif)
так сказать для будущих заморочек
![:mad:](http://vse.kz/public/style_emoticons/default/wink.gif)
Сообщение отредактировал Jismo: 10.06.2009, 11:04:54
#109
Отправлено 10.06.2009, 11:50:05
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
2Conkistador У меня в программах достаточно того чтобы MBX файл лежал в одной директории с DLLкой.
2Jismo: у меня аналогично все работало.
Поэтому я и спрашиваю пример декларации сабов из DLL, мож там экзотично написано
2Jismo & 2 swatch
вот пример объявления функции
'----------------------------------------------
Declare Method ExecuteMapInfo Class "MapInfoShowFoto.Startup" Lib "MapInfoShowFoto.dll" (aFoto As Integer, aFolder As Integer, ByVal aAzimut As String, ByVal aTrackPointId As String,ByVal aCity As String,ByVal aDate1 As String,ByVal aaDate2 As String)в том то и дело что и у меня достаточно чтобы они лежали рядом, но как только пользователь чтото откроет с помощью Файл->открыть... из другой папки как МБ тут же перестает видеть мою dll...
#110
Отправлено 10.06.2009, 11:53:30
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
попробовал так действительно перестал ругаться но это слегка не красивый вариант... нет ли другого способа побороть эту проблемму?
... получается что нарушается условие в соответствии с которым dll с дотнетовским методом должна находиться в одной папке со скриптом, т.к. папкой по умолчанию становится та папка откуда был открыт последний слой.
А если попробовать dll-ку и .mbx положить в один каталог с mapinfo.exe?
PS: сам не пробовал, но, вроде как, этот путь должен проверяться перед тем как mapInfo начнет ругаться.
#113
Отправлено 10.06.2009, 12:13:08
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
тааак а что за каталог программ и как в него добавить ????Это конечно тоже не очень хорошо зашивать строгую директорию в проге, но тем не менее у тебя уже есть 2 варианта.
Того и гляди скоро до истины докапаешься
СТОП!!!!! А ты что не добавлял свою прогу в каталог программ в MI???
а как это можно сделать ? при декларации не помогает....Ну тогда указывай директорию где будет лежать эта DLL и все
#114
Отправлено 10.06.2009, 12:16:29
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Это конечно тоже не очень хорошо зашивать строгую директорию в проге, но тем не менее у тебя уже есть 2 варианта.
Того и гляди скоро до истины докапаешься
СТОП!!!!! А ты что не добавлял свою прогу в каталог программ в MI???
попробовал не годится....
я бы был не против запросить директорию например вот так ApplicationDirectory$() возвращается правильный путь к папке где лежит dll НО как это использовать ? разве можно динамически объявить процедуру в MB?
Сообщение отредактировал Conkistador: 10.06.2009, 12:18:41
#116
Отправлено 10.06.2009, 12:42:21
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
If your Declare statement specifies a DLL name without a path (e.g. ”mylib.dll”),
MapInfo tries to locate the DLL from various likely locations, in the following order:
1. If the DLL is in the same directory as the .MBX file, MapInfo loads the DLL;
otherwise, go to step 2.
2. If the DLL is in the directory where MapInfo is installed, MapInfo loads the
DLL; otherwise, go to step 3.
3. If the DLL is in the Windows\System directory, MapInfo loads the DLL;
otherwise, go to step 4.
4. If the DLL is in the Windows directory, MapInfo loads the DLL; otherwise, go
to step 5.
5. MapInfo searches for the DLL along the user’s system search path.
Должно само находить либу в указанных местах если декларация без пути.
На форум к MapInfo ходили?
Сообщение отредактировал swatch: 10.06.2009, 12:42:54
#117
Отправлено 10.06.2009, 13:00:19
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
спасибо... будем пытаться...Видимо БАГ MapInfo, но в мануале по MB написано так:
If your Declare statement specifies a DLL name without a path (e.g. ”mylib.dll”),
MapInfo tries to locate the DLL from various likely locations, in the following order:
1. If the DLL is in the same directory as the .MBX file, MapInfo loads the DLL;
otherwise, go to step 2.
2. If the DLL is in the directory where MapInfo is installed, MapInfo loads the
DLL; otherwise, go to step 3.
3. If the DLL is in the Windows\System directory, MapInfo loads the DLL;
otherwise, go to step 4.
4. If the DLL is in the Windows directory, MapInfo loads the DLL; otherwise, go
to step 5.
5. MapInfo searches for the DLL along the user’s system search path.
Должно само находить либу в указанных местах если декларация без пути.
На форум к MapInfo ходили?
нет не ходил, а как туда попасть ?
#118
Отправлено 10.06.2009, 14:28:31
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Извините, что послал на форум не проверив. К сожалению, на форуме не нашел постов по MB, но в свое время они там были.нет не ходил, а как туда попасть ?
Также есть там База знаний по продуктам. Попробуйте поискать инфу про этот "баг" или спросить саппорт.
Сообщение отредактировал swatch: 10.06.2009, 14:34:02
#119
Отправлено 13.07.2009, 13:58:15
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
1) Необходимо в заданной точке на карте нарисовать окружность. Рисую так:
Exec("Insert Into {0} (Obj) Values ( CreateCircle( {1}, {2}, {3})) ", _TableName, X, Y, R);
Рисуется круг, заполненный белым цветом. Как мне нарисовать именно окружность, без заливки внутри?
2) Сразу после рисования, круг не отображается на карте, необходимо свернуть/развернуть окно или изменить масштаб карты чтобы он отобразился. Рисую его в анимационном слое, после рисования делаю так:
Exec("Update Window FrontWindow()");
В чем может быть проблема?
3) Как получить текущий масштаб карты и установить свой? т.е. у меня есть радиус того же самого круга, например 10 км. Как мне нарисовать круг именно 10км а не 10 тысяч км? И как можно попросить пользователя ввести масштаб?
Заранее спасибо! буду очень благодарен, срочно надо...
#120
Отправлено 13.07.2009, 17:22:59
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
1) тебе надо задавать свойство Brush прозрачным: 1 параметр = 1
2) это потому что слой анимационный у него есть такой глюк, я тоже с этим сталкивался рисовало на половину
![:D](http://vse.kz/public/style_emoticons/default/smile.gif)
3) так получаем
MapperInfo( window_id, MAPPER_INFO_SCALE)так изменяем
Set Map Scale screen_dist [ Units dist_unit ] For map_dist [ Units dist_unit ]символы "[]" означают что, то что внутри скобок, не обязательно писать, но в твоем случае надо
screen_dist и map_dist - задают масштаб Карты (например, screen_dist = 1 inch, map_dist = 1 mile).
Scale Изменяет масштаб показа Карты в окне. Например, следующий оператор изменяет увеличение Карты так, чтобы в 1 дюйме изображения было показано 10 миль Карты:
Set Map Scale 1 Units "in" For 10 Units "mi"Вообщем почитай в хелпе или справочнике про: Set Map statement и MapperInfo
в диалоге пользователя проси его чтоб вводил масштаб(в текст бокс или куда-то еще)
PS: надеюсь ниче страшного если на "ты" я писал
![:D](http://vse.kz/public/style_emoticons/default/smile.gif)
Количество пользователей, читающих эту тему: 2
пользователей: 0, неизвестных прохожих: 2, скрытых пользователей: 0