Здравствуйте. Возникает ошибка при закрытии окна диалога выбора семантики selSemanticSelect.
Вот код вызова диалога
long int SemanticSelect(HRSC hrsc, TASKPARM* parm)
{
long int ret=-1;
HINSTANCE hLib = ::LoadLibrary("gisforms.dll");
if(hLib){
long int (*f)(HRSC,TASKPARM* );
(FARPROC)f=GetProcAddress(hLib,"selSemanticSelect");
if(f)ret=(*f)(hrsc,parm);
::FreeLibrary(hLib);
}
return ret;
}
а вот применение этой функции
void __fastcall TFormMain::bthChoiceSemanticClick(TObject *Sender)
{
long int semcode;
HRSC hrsc=func->GetRscIdent(hmap,hmap);
TASKPARM p;
memset(&p,0,sizeof(TASKPARM));
p.Handle=Handle;
// try{
semcode=SemanticSelect(hrsc,&p);
// }catch(...){;}
if(semcode!=-1)edtSemanticCode->Text=IntToStr(semcode);
else edtSemanticCode->Text="";
}
Приходится использовать SemanticSelect в защищенном блоке. Без try...catch вылезает ошибка Access Violetion ...
Объясните пожалуйста в чем может быть причина, может быть я неправильно TASKPARM p определяю?
Вот код вызова диалога
long int SemanticSelect(HRSC hrsc, TASKPARM* parm)
{
long int ret=-1;
HINSTANCE hLib = ::LoadLibrary("gisforms.dll");
if(hLib){
long int (*f)(HRSC,TASKPARM* );
(FARPROC)f=GetProcAddress(hLib,"selSemanticSelect");
if(f)ret=(*f)(hrsc,parm);
::FreeLibrary(hLib);
}
return ret;
}
а вот применение этой функции
void __fastcall TFormMain::bthChoiceSemanticClick(TObject *Sender)
{
long int semcode;
HRSC hrsc=func->GetRscIdent(hmap,hmap);
TASKPARM p;
memset(&p,0,sizeof(TASKPARM));
p.Handle=Handle;
// try{
semcode=SemanticSelect(hrsc,&p);
// }catch(...){;}
if(semcode!=-1)edtSemanticCode->Text=IntToStr(semcode);
else edtSemanticCode->Text="";
}
Приходится использовать SemanticSelect в защищенном блоке. Без try...catch вылезает ошибка Access Violetion ...
Объясните пожалуйста в чем может быть причина, может быть я неправильно TASKPARM p определяю?