На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

SDK-12

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
SDK-12, Планируется ли выход MAPAPI/PANAPI для платформы Windows x64?
 
Собственно, в заголовке все сказано.
 
SDK12 (Примеры разработки приложений в ГИС "Панорама" 12) добавлен на сайт.

Функции интерфейсов MAPAPI и PANAPI, которые Вы использовали для написания своих прикладных х32-задач остаются неизменными и доступными и для х64.
 
Добрый день,
Просьба проверить функцию mapBuildMtw(): в проекте, скомпилированном под x64, она выдает рантайм-ошибку структуры BUILDMTW (конкретно - поля StructSize). Значение поля перед входом в функцию верное (132), проверил отладчиком.

Собственно, код:

   BUILDMTW mtwparm;
   double Delta=10;

   mtwparm.StructSize=sizeof(BUILDMTW);
   mtwparm.BeginX=floor(mapGetMapX1(Hmap)/Delta)*Delta;
   mtwparm.BeginY=floor(mapGetMapY1(Hmap)/Delta)*Delta;
   mtwparm.Width=ceil( (mapGetMapY2(Hmap)-mtwparm.BeginY) /Delta)*Delta;
   mtwparm.Height=ceil((mapGetMapX2(Hmap)-mtwparm.BeginX)/Delta)*Delta;

   mtwparm.ElemSizeMeters=Delta;
   mtwparm.ElemSizeBytes=4;
   mtwparm.Unit=1;
   mtwparm.ReliefType=0;
   mtwparm.UserType=5115604;
   mtwparm.Scale=1;
   mtwparm.HeightSuper=1;
   mtwparm.FastBuilding=2;
   mtwparm.Method=3;        
   mtwparm.Extremum=1;
   mtwparm.Border=0;
   mtwparm.LimitMatrixFrame=1;
   mtwparm.NotUse3DMetric=0;
   mtwparm.SurfaceSquare3DObject=0;
   mtwparm.AltitudeMarksNet=0;
   mtwparm.LimitMatrixByFramesOfSheets=0;
   memset(mtwparm.Reserve,0,20);

   mapBuildMtw(Hmap, filename, 0, &mtwparm, 0); // --------------- здесь программа валится --------

Под x32, скомпилированном для Панорамы-11, все проходит без ошибок.
Может быть, для 12 версии что-то поменялось?
 
Цитата
Глазыч написал:
Под x32, скомпилированном для Панорамы-11, все проходит без ошибок.
Может быть, для 12 версии что-то поменялось?
Нет. Отличия только в разрядности сборки.
В x64 все указатели и идентификаторы - 8 байт. Это касается и HMAP.
Код
#if defined(_M_X64) || defined(BUILD_DLL64)
typedef __int64   HMAP;    // ИДЕНТИФИКАТОР ОТКРЫТОЙ ВЕКТОРНОЙ КАРТЫ
...
#else
typedef int   HMAP;    // ИДЕНТИФИКАТОР ОТКРЫТОЙ ВЕКТОРНОЙ КАРТЫ#endif

Ошибку проверим.
Просьба уточнить, в какой среде Вы выполняете сборку и как из Вашей библиотеки происходит вызов mapBuildMtw (статическая или динамическая линковка mapacces.dll)?
 
Прошу прощения за беспокойство, разобрался.
Из-за изменения структуры BUILDMTW последняя строка моего кода рушит программу - теперь нужно мемсетить не 20 байтов, как раньше, а только 12 :((

А вы говорите - можно пользоваться, как раньше ))

В общем, вопрос исчерпан, спасибо всем.
 
Цитата
Глазыч написал:
А вы говорите - можно пользоваться, как раньше ))
Все так и есть. Только, если вы переходите на 12-ю версию, то и все заголовочные файлы должны быть взяты из 12-ой версии и с ними необходимо пересобрать Ваши проекты.

Использовать memset с непосредственным указанием размера в виде константы - это пагубная привычка, особенно, когда речь идет о структурах и переменных, которые не Вы сами описываете, ибо они могут измениться неожиданно для Вас (что и произошло).
Рекомендуется использовать sizeof. Причем лучше вначале обнулить всю структуру целиком, а потом заполнить только нужные поля:
Код
BUILDMTW mtwparm; 
memset(&mtwparm, 0, sizeof(mtwparm));
mtwparm.StructSize=sizeof(BUILDMTW); 
... 

PS.
Спасибо, что своевременно сообщили о том, что вопрос решен!
 
Будет ли замена прототипов функий PanApi 12-й версии на Unicode-версии? Ну, например, хотя бы через добавление Unicode-аналогов тех же методов, так как это сделано в MAPAPI.

Сейчас просто трудно уследить, где-поймаешь ошибку. Причем даже вам самим  :D

Ниже вид панелей редактора ГИС Карты. По ChangeLanguage вы их меняете корректно на Unicode-текст. Но о том, что функция создания панели работает с ANSI, как видно из примера, не обратили внимание.

Изменено: Олег Касьянов - 05.02.2017 17:02:41
 
Цитата
Олег Касьянов написал:
Будет ли замена прототипов функий PanApi 12-й версии на Unicode-версии? Ну, например, хотя бы через добавление Unicode-аналогов тех же методов, так как это сделано в MAPAPI.

Сейчас просто трудно уследить, где-поймаешь ошибку. Причем даже вам самим  

Ниже вид панелей редактора ГИС Карты. По ChangeLanguage вы их меняете корректно на Unicode-текст. Но о том, что функция создания панели работает с ANSI, как видно из примера, не обратили внимание.
На данный момент актуальна версия 12.4.0 программы ГИС "Панорама". В ней проблема работы с Unicode-текстами должна быть решена.
Просьба обновить с нашего сайта последнюю версию программы 12.4.0.
http://gisinfo.ru/download?id=215
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности