Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

SDK: **рятся указатели.

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
rjdgtn



Зарегистрирован: 26.02.2009
Сообщения: 37

СообщениеДобавлено: Чт 25 Мар 2010 00:28    Заголовок сообщения: SDK: **рятся указатели. Ответить с цитатой

Версия ИнГЕО 4.5.
Краткое описание проблемы:
В ходе написания плагина под ИнГЕО заметил что значения переменных передаваемых в фунции ИнГЕО по указателю МЕНЯЮТСЯ в ходе выполнения программы. Данный факт проверен. Передача фейковых копий переменных вместо их самих решило проблему.

Код:
markerID
markerlayerID - глобальые переменные типа WideString (С++ Builder)
как видно из кода функции эти переменные в ходе выполнения функции не должны меняться, однако значение markerlayerID меняется уже к моменту выполнения оператора while.
Код:

void TMainForm::CreateObj(double x,double y)
{
if(!App->ActiveDb->StyleExists(markerID)){
        ShowMessage("Стиль с ID:\""+markerID+"\"не найден в текущей БД.");
                started=false;
                query=NULL;
                LabeledEdit1->ReadOnly=false;
                Button1->Caption="Поиск";
                Button4->Enabled=false;
                return ;

        }
if(!App->ActiveDb->LayerExists(markerlayerID)){
        ShowMessage("Слой с ID:\""+markerlayerID+"\"не найден в текущей БД.");
                started=false;
                query=NULL;
                LabeledEdit1->ReadOnly=false;
                Button1->Caption="Поиск";
                Button4->Enabled=false;
                return ;
                }
IIngeoMapObjectsQuery* Query;
App->ActiveDb->MapObjects->QueryByRect(Variant((wchar_t*)markerlayerID),x-1,y-1,x+1,y+1,false,&Query);

while(!Query->EOF_){
        IIngeoMapObject* tobj=App->ActiveDb->MapObjects->GetObjectA(Query->ObjectID);
        for (int i=0;i<tobj->Shapes->Count;i++)
              if((WideString)tobj->Shapes->get_Item(i)->StyleID==(WideString)markerID)
                        return ;
        Query->MoveNext();

}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB