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

KFF (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » KFF
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 312 313 314 315 316 317 318 319 320 321 322 ... 327 След.
Работа с програесс баром
 
Здравствуйте господин TeaCPlusPlus !
А чем кроме синтаксиса отличается билдере с++ 6
от Делфи ?.
Если бы Вы писали в Visual C++ то совсем другое дело
а Билдер - это тот же Делфи (на все 100%)
кроме языка "наполнения логикой" тут Си++.
mapGetHeightValue и VB6
 
Здравствуйте Tim
Во первых :
[QUOTE]Declare Function mapGetHeightValue Lib "gisacces.dll" (ByVal hMap As Long, ByVal pointX As Double, ByVal pointY As Double) As Long[/QUOTE]
результат функции должен быть вроде Double ???
то есть Ваш код должен выглядеть приблизительно так:

Declare Function mapGetHeightValue Lib "gisacces.dll" (ByRef hMap As Long, ByRef pointX As Double, ByRef pointY As Double) As Double

Public Sub НАЗВАНИЕ

Dim H As Double
........
Процесс открытие карты 'ВАШ КОД
......
Set H = mapGetHeightValue(Map , XXXXX#, YYYYYYY#)     'XXXXX YYYYYYY - координаты
........
закрытие карты   'ВАШ КОД
End Sub
----------------
Попробуйте
Работа с програесс баром
 
С паскаля поймете ?
ШАГ 1:
// переопределние стандартного класса TProgressBar
// у меня он в ComCtrls гед он в Си - незнаю
 TProgressBar = class(ComCtrls.TProgressBar)
   procedure PerсentEvent(var Msg : TMessage); message $0581;
 private
 end;

ШАГ 2: Ваш прогресс бар висит на какойто-форме, фрейме или создается автоматом
      его Хендл (PB->Handle) заносите в Шаг 3  

ШАГ 3: function mapBuildMtr(Map:HMap;filename:PChar;
                    var parm:TMTRBUILDPARM;вот сюда >>>> [B]handle:HWND[/B]):integer;
ШАГ 4:
в методе TProgressBar->PerсentEvent отлавливаем WParam c переменной >>> var Msg : TMessage
и ее заносим в свойство TProgressBar->Position
Просьба к разработчиками (класс - HSelect)
 
Спасибо господа разработчики !
Вот это
[QUOTE]// Отключить отображение всех объектов
mapSelectObject(hSelect, -1, 0);[/QUOTE]
вместе с этим :
[QUOTE]int count = mapGetRscObjectsCount(rsc, oCode, oLocal);[/QUOTE]
и без этого:
[QUOTE]mapSelectLocal(FSel, -1, 0))[/QUOTE]
В сумме помогло.
---------------------
Буду пользоватся.
А тему можно закрывать.
Изменено: XENA - 16.03.2009 14:44:31
Вопросы по MapApi
 
Здравствуйте Олег Валентинович.
[QUOTE]За одним исключением, функции MAPAPI в ГИС Карта 2008 не поддерживают многопоточность.[/QUOTE]
Вроде бы в вопросе, речи о многопоточности не идет.

1. А вот код написанный под ГисТоолКит (отдельным приложением)
при переносе в задачу MapApi (перенесены только 3 функции)
под Гис Карта 2003 срабатывают, под 2008 некорректно в частности:  
при подобном вызове функций :
---------------------------------------
type TArray = array of double ; <<< тип - "резиновый массив"

function  XXXX(Map: HMap): TArray;
begin
// обработка
end;

function CallMapFunction(map: HMAP; parm: PTASKPARM): longint;
var R : TArray;
begin
R:=XXXX(Map);
>>>> если вот в этом месте
>>>> после вызова функции ХХХХ
передача указателя Map в любую другую функцию
Например в ту же ХХХ

R:=XXXX(Map);<<< вылетает
end;
----------------------------------
Складывается такое впечатление что в ядре Гис Карта 2008
не предусмотрена возможность вызова различных функций, а
должна работать только одна то есть
Вот сюда >>> CallMapFunction(map: HMAP; parm: PTASKPARM)
Мне надо вместить весь код задачи.
Тогда все ОК.

2. По mapSelectSeekArea
То ли в Гис Панораме создан свой - постоянный класс HSelect
то ли mapSelectSeekArea как то по другому откомпилирована но
она почему-то неправильно срабатывает в теле CallMapFunction.
----------
Причем замечено следующее (к тексту который выделен синим)
если в теле CallMapFunction есть такой код:

Sel:=mapCreateMapSelectContext(Map);
.......
mapDeleteSelectContext(Sel);
Sel:=0;
>>> тот тут (после явного присвоения нуля переменной Sel)
она не нулевая.
------------------
PS: На всякий случай:
CallMapFunction обьявлена в библиотеке
вот так
exports
CallMapFunction     name 'CallMapFunction',   // для старых версий Гис Карта
CallMapFunction     name 'CallMapFunctionEx'; // для ГисКарта 2005 и выше
Просьба к разработчиками (класс - HSelect)
 
Здравствуйте Александр !
Ну что Вы там все так агрессивно настроены.
Ну неработает Ваша mapSelectObject даже с одним ситом
и с объектами без серии.
  Кварталы в отосланной карте  перекодированы на Вокзалы код 62120000
  (они не входят в серию)
Все равно или все (если без масла[B] mapSelectLocal(FSel, -1, 0)[/B])
или ничего (если с маслом - [B]mapSelectLocal(FSel, -1, 0);)[/B]
--------------------
PS: Александр, Вы же знаете, я не начинающий ,
мною уже сколько кода написано с Seek функциями ...
НО : никогда не использовалась вот эта функция
[B][I]mapSelectObject.[/I][/B]
Поэтому я от нее открестилась еще в первом вопросе
Изменено: XENA - 15.03.2009 21:44:04
Вопросы по MapApi
 
Здравствуйте господа разработчики !
Во время отладке одного из приложений возникли вопросы.
При работе с библиотекой gisacces.dll все срабатывает корректно
при переносе кода в задачу под Гис Карта 2008 возникают
некоторые феномены:
1. Корректно ли срабатывает функция mapSelectSeekArea при вызове
ее из чужого приложения (задачи) ГисКарта 2008 ?
2. Не затыирается (уплывает) ли указатель на главную карты
в приложении с ипользованием "резинового массива", массива
с изменяющейся длиной.
--------------------------------
Код и подробности одной и другой задачи отправляю Вам на ящик.
Просьба к разработчиками (класс - HSelect)
 
Валентинович.
Или я торможу, или функция баговая
--------------------------
Последовал Вашему 2-му варианту
переделан код вот так:
---------------------------------
function  _SelectCopyObjects(FMap: HMAP; oCode,oLocal: integer):TIntArray;
var i    :integer;
   Obj  : HObj;
   FSel : HSelect;
begin
 Finalize(result);
 FSel := mapCreateMapSelectContext(FMap);
 Obj:=mapCreateSiteObject(FMap,FMap,KM_IDFLOAT2,0);
// mapSelectLocal(FSel, -1,0);
 i:=0;
 mapSelectObject(FSel,mapGetRscObjectCodeByNumber(mapGetRscIdent(FMap,FMap),oCode, oLocal, 1),1);
 while mapSeekSiteSelectObject(FMap,FMap,Obj, FSel, 4*Byte(i>0))<>0 do
 begin
   SetLenGth(result,LenGth(result)+1);
   result[High(result)]:=mapObjectKey(Obj);
   inc(i);
 end;
 mapDeleteSelectContext(FSel);
 mapFreeObject(Obj);
end;
------------------
// Вызов
//   A:=_SelectCopyObjects(MV.MapHandle, 45111000, OL_SQUARE); // кварталы (городские с Подольска 5 штук)
//   Finalize(A);
-----------------------------
Карта у Вас на ящике
------------------
в случае с mapSelectLocal(FSel, -1,0); - на выходе 0 объектов
без mapSelectLocal - все объекты (включая озера)
------------------
Може чего то не доганяю ?
некорректная работа функции
 
У меня 10.1.1. что есть новее ?
Обновление карты многопотоковой программе
 
Валентинович, спасибо за разьяснение !
Меня больше всего интересовало :
[QUOTE]...функция mapAdjustData может вызываться из разных потоков...
и
...
В версии 10 все потоки работают с одной копией данных.
При возвращении управления данные уже обновлены в памяти.
...
[/QUOTE]
по остальной части ответа - буду иметь в виду на будущее.
-------
Тему считаю закрытой
Изменено: XENA - 15.03.2009 13:14:43
Страницы: Пред. 1 ... 312 313 314 315 316 317 318 319 320 321 322 ... 327 След.



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

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