[QUOTE]Елена Кузнецова пишет:
Обязательного зануления не требуется.[/QUOTE]
Попробуйте повторить эту фразу Олегу Валентиновичу :D
[QUOTE]Обо всем позаботится класс набора объектов.[/QUOTE]
Елена, если Вы посмотрите мой первый пост то тма видно, что класса набора объектов уже нет в природе, а объект obj2 остался заполненным
По сути стоит задача найти объект в равноправной серии который подходит по параметрам.
Допустим, у меня есть объект "ДОМ" (1) и "Подпись дома" (2). Они связаны через семантику 32803 в которую пишется ключ первого объекта набора, пусть это будет дом (1)
теперь мне нужно найти объект подпись. Если я полезу в семантику 32803 напрямую я найду значение которое ссылается на меня же (на дом).
Чтобы найти все объекты группы и отобрать подпись мне нужно
а) Создать контекст группы
HOBJSET hObjSet = mapCreateObjectSet(); << СОЗДАЛ
б) Собрать группу
mapBuildObjectSet(hObjSet, hobj); << СОБРАЛ hobj это мой обънкт ДОМ
в) пройтись по всем объектам и найти подпись. Зная что у меня 2 объекта, я ищу тот, номер которого не совпадает с (1) - ДОМ
[CODE] for (int i = 1; i<= mapObjectSetCount(hObjSet); i++)
{
obj2 = mapObjectSetObject(hObjSet, i);
if (refkey != mapObjectKey(obj2)) break;
obj2 = 0;
}
г) после поиска освобождаем контекст
mapFreeObjectSet(hObjSet);
НО !!! obj2 при условии обнаружения второго объекта [B]if (refkey != mapObjectKey(obj2)) break; [/B]
Содержит объект подпись которая доступна после mapFreeObjectSet и аж до конца функции....
С указателя obj2 можно брать семантики, его можно перемещать (менять метрику), изменять, и делать всё что угодно КРОМЕ :!:
mapFreeObject(obj2) даёт AccessViolation
-----------------
Ещё раз повторяю вопрос, как пользоваться этими функциями и не вызовут ли они
Out Of Memory при обильном использовании ?