|
马上注册登录,享用更多网站功能!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我想用程序查询当前显示部件的表达式的值,再乘一个系数来改变表达式的值,执行时出现如附件所示的错误,兄弟们,帮我看看阿,该要释放的内存
我都UF-free了阿。高手,是什么问题阿
代码如下:
static double UF_MODL_ask_exp_value(char *exp_str) //得到一个EXPRESS表达式的值
{
tag_t exp_tag;
char *l_str,*r_str;
double value;
UF_MODL_dissect_exp_string(exp_str,[$l_str,&r_str,&exp_tag)]
UF_free(l_str);
UF_free(r_str);
if(!UF_MODL_ask_exp_tag_value(exp_tag,&value))
return value;
else
return 0.0;
}
//----------------------------------------------------------------------------
// Activation Methods
//----------------------------------------------------------------------------
// Unigraphics Startup
// This entry point activates the application at Unigraphics startup
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
{ int number_of_exps,i;
tag_t *exps;
char *string,*string1;
tag_t part_tag;
double* a;
double b;
/* Initialize the API environment */
int errorCode = UF_initialize();
if ( 0 == errorCode )
{
/* TODO: Add your application code here */
part_tag=UF_PART_ask_display_part();//查询部件的标识
UF_MODL_ask_exps_of_part( part_tag,[$number_of_exps,&exps)]//根据部件的标识获得所有表达式的标识
for(i=0;i<number_of_exps;i++)
{
UF_MODL_ask_exp_tag_string(exps,[$string)]//利用表达式标识获得表达式字符串
a=UF_MODL_ask_exp_value(string);//利用表达式字符串获得表达式的右值
UF_free(string);
}
UF_free(exps);
b=3*a[1];
sprintf(string1,"p1=%f",b);
string=string1;
UF_MODL_edit_exp(string);
UF_MODL_update();
/* Terminate the API environment */
errorCode = UF_terminate(); |
|