[QUOTE]
Владислав Костылев написал:
Объект по-прежнему не находится. В te (TextEdit) ничего не выводится.Я посмотрел один из примеров кодов работы с mapSeekSiteObject и там объект создавался в одной функции запоминался в глобальной переменной и использовался в другой. Величина указатель на объект (id в нашем случае) было не что-то большое вроде 16799367 а мальнеькое на уровне 2, 3 и так далее. Мне кажется что для поиска нужна не эта функция.[/QUOTE]
Владислав, если не нашло объект значит на Вашей карте нет объекта с номером 16799367
Каждая карта имеет свою нумерацию которая может совпадать а может и нет. Если Вы подключили к основной карте вторую карту, то на неё у объектов другие номера и там вы не найдёте объект с номером 16799367
Прежде чем писать код, нужно привести в порядок (на бумаге) исходные данные. То есть
определиться что у вас основная карта, что у вас рабочая карта где ищете где наносите и откуда читаете
Программирование оно любит математическую точность а не "ищу где-то там, что то приблизительно такое"
[QUOTE]В ответе приведенном пользователем KFF необходимо заменить вызов функции mapSemanticValueByCode на mapSemanticValueName.[/QUOTE]
По большому счёту, я читаю семантики вот так (пример из рабочего проекта)
[CODE]// выгрузка семантик объекта
char b[1024];
for (int i = 1; i <= semcount; i++)
{
code = mapSemanticCode(obj, i);
// берём описание семантики
mapSemanticDescribeEx(obj, &desc, code);
// служебную игнорирую.
if (desc.Service)
continue;
b[0] = 0;
switch (desc.Type)
{
// Значение не установлено
case TUNDEFINED:
break;
case TREFER: // Ссылка на произвольный объект карты (уникальный номер объекта)
case TCOLOR: // Числовое значение цвета в RGB
ivalue = mapSemanticLongValue(obj, i);
sprintf(b, "%d", ivalue);
break;
// Числовое значение
case TNUMBER:
if (desc.Decimal)
{
fvalue = mapSemanticDoubleValue(obj, i);
sprintf(b, "%.*f",desc.Decimal, fvalue);
}
else
{
ivalue = mapSemanticLongValue(obj, i);
sprintf(b, "%d", ivalue);
}
break;
// Значение в виде числового кода из классификатора значений
case TCODE:
ivalue = mapSemanticLongValue(obj, i);
ref = (char*) mapGetRscClsKey(hRsc, code, ivalue);
if (ref)
strcpy(b, ref);
else
{
//недопустимая перечислимая
continue;
}
break;
// Угловая величина в радианах
case TANGLE:
fvalue = mapSemanticDoubleValue(obj, i);
sprintf(b, "%.8f", fvalue);
break;
default:
// TSTRING = 0 Символьная строка
// TANYFILE = 9, // Имя файла зарегистрированного типа
// TBMPFILE = 10, // Имя файла BMP
// TOLEFILE = 11, // Имя файла,обрабатываемого OLE-сервером
// TMAPFILE = 13, // Имя файла-паспорта района
// TTXTFILE = 14, // Имя текстового файла
// TPCXFILE = 15, // Имя файла PCX
// TFONT = 20, // Имя шрифта ("Arial", "Courier"...)
// TDATE = 17, // Значение даты в числовом виде (ГГГГММДД)
// TTIME = 19, // Значение времени в числовом виде (ЧЧММСС)
mapSemanticValue(obj, i, b, sizebuff);
}
// значение семантики в текстовом виде в b
}
[/CODE]