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 環境では遜色ない?