2020/10/08
結合設計などで時間がかかる.
BlockLay::ChangeParam での L0xd を Ln_0xd に変更して登録する所.
そこから呼ばれる BlockLay::ChangeParam1 の寸法式などを書き換える所で必要以上に Set?SExp が呼ばれていた.
書換処理の VarCnv::DivChgParam の戻り値が間違っていたため.
2020/10/08 修正 //******************************************************************************* // 関数名 :変数,数値,演算子,その他を分割して,対象部分を書き換える // 作成日 :’06/08/08 // 変更日 :’20/04/16 // 変更日 :’20/10/08 2020/04 の変更で,必要ない場合も処理されていた //******************************************************************************* BOOL VarCnv::DivChgParam(const CString& exp,const CString& oName,const CString& nName,CString* newExp) { // *newExp = exp ; // 2020/10/08 add // if (exp.Find(oName) < 0) { return FALSE ; } // 2020/10/08 add check tstring t20 ; tstring t16 ; BOOL result_20 = FALSE ; BOOL result_16 = FALSE ; result_20 = VarC_20::DivChgParam(exp,oName,nName,newExp) ; t20 = LPCTSTR(*newExp) ; result_16 = VarC_16::DivChgParam(exp,oName,nName,newExp) ; t16 = LPCTSTR(*newExp) ; if (t20 != t16) { ::i_Dump(t20) ; ::i_Dump(t16) ; } return (result_20||result_16) ; } 2020/04~2020/10 のコード BOOL VarCnv::DivChgParam(const CString& exp,const CString& oName,const CString& nName,CString* newExp) { tstring t20 ; tstring t16 ; VarC_20::DivChgParam(exp,oName,nName,newExp) ; t20 = LPCTSTR(*newExp) ; VarC_16::DivChgParam(exp,oName,nName,newExp) ; t16 = LPCTSTR(*newExp) ; if (t20 != t16) { ::i_Dump(t20) ; ::i_Dump(t16) ; } return TRUE ; } Calc_16 のコード BOOL VarCnv::DivChgParam(const CString& exp,const CString& oName,const CString& nName,CString* newExp) { *newExp = exp ; if (exp.Find(oName) < 0) { return FALSE ; } // 対象の変数を使用していない CStringArray divExp ; VarCnv::DivideParam(exp,&divExp) ; BOOL changed = FALSE ; for (int dIndex=0 ; dIndex<divExp.GetSize() ; dIndex++) { if (divExp[dIndex] == oName) { divExp[dIndex] = nName ; changed = TRUE ; } } if (changed) { newExp->Empty() ; // バラバラのものを,一つの式に for (int dIndex=0 ; dIndex<divExp.GetSize() ; dIndex++) { *newExp += divExp[dIndex] ; } } return changed ; }
2020/10/09
frml_cal.hxx ::Formula_modify を少し修正.
RPN 前処理で効果がない計算式はスキップする様に変更.
あまり効果はないと思われる.
OpenMP の関係と思われるが,Win10 環境では遜色ない?