Parameterdurchquerung, Werterfassung
Hauptfunktion
Spezifische Gebrauchsanweisungen finden Sie in der offiziellen Dokumentation.
ProParameterVisit
ProMdlCurrentGet
ProMdlToModelitem
ProParameterValueGet
Code
Zugriffsaktionsfunktion
Die ProParameterVisit-Funktion durchläuft die Parameter des Zugriffsmodells, überspringt die Filterung durch die Filterfunktion und führt die gewünschte Operation durch die Aktionsfunktion aus.
//参数访问动作函数定义
ProError ParameterActionFn(ProParameter *param,ProError status ,ProAppData app_data ) {
//获取app_data 的地址
ProArray* p_array;
p_array = (ProArray*)(ProParameter**)app_data;
//给数组赋值,添加
ProArrayObjectAdd(p_array, -1, 1, param);
return PRO_TK_NO_ERROR;
}
Eingabefunktion
void ParamsGet() {
ProError status;
ProParameter *p_data;
ProStringToWstring(msgfil, (char*)MSGFIL);
ProCharLine sdf;
ParametersGet(&p_data);
//遍历获取参数值
ProParamvalue pvalue;
int n;
ProArraySizeGet(p_data, &n);
for (int i= 0;i<n;i++)
{
AfxMessageBox((p_data+i)->id);
ProParameterValueGet(p_data + i, &pvalue);
status = ProMessageDisplay(msgfil, (char*)"TEST String: %0s", pvalue.value.s_val);
AfxMessageBox(pvalue.value.s_val);
}
//修改参数的值
ProWstringToString(sdf, L"ok");
ProStringToWstring(pvalue.value.s_val, sdf);
ProParameterValueSet(p_data + 3, &pvalue);
}
Parameterliste vom aktuellen Modell abrufen
ProError ParametersGet(ProParameter** p_data) {
ProMdl model;
ProModelitem modelitem;
// 获取当前模型
ProError status;
status= ProMdlCurrentGet(&model);
if(status!= PRO_TK_NO_ERROR){
AfxMessageBox(_T("当前不存在模型"));
return status;
}
ProMdlToModelitem(model, &modelitem);
//分配内存?什么时候
ProArrayAlloc(0, sizeof(ProParameter), 1, (ProArray*)p_data);
//调用访问函数,获取参数
status= ProParameterVisit(&modelitem, NULL, ParameterActionFn, p_data);
return status;
}