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