コード例 #1
0
ファイル: cfields.cpp プロジェクト: adoggie/algorithm_package
/************************************************************************************
函数名称:
void CFields::NewData() 
功能说明:为一条记录分配一个新空间.

详细解释:
    
出入参数:
[in]: 无.
     
[out]:无.

返回类型:void.

制作:YTLI   2002/07/15

修改: 
***********************************************************************************/
void CFields::NewData() 
{
	int nOldVersion = m_nCurVersion;
	SetCurVersion();

	ClearAllVersionPointer();

	for (int i= 0;i<m_FieldArray.GetSize();i++)
	{
		CField* pField = (CField*)m_FieldArray.GetAt(i);
		if(pField)
			pField->NewData();
	}

	SetCurVersion(nOldVersion);	
}
コード例 #2
0
ファイル: cfields.cpp プロジェクト: adoggie/algorithm_package
/************************************************************************************
函数名称:
void CFields::Add(CField* Field)
功能说明:将字段Field加入到字段链表m_FieldList中.

详细解释:
    
出入参数:
[in]: 1.Field:字段指针.
     
[out]:无.

返回类型:void

制作:YTLI   2002/07/15

修改: 
***********************************************************************************/
void CFields::Add(CField* pField)
{
	if(!pField)
		return;
	
	m_FieldVersion.Add(pField);
	SetCurVersion();
}
コード例 #3
0
ファイル: cfields.cpp プロジェクト: adoggie/algorithm_package
/************************************************************************************
函数名称:
void CFields::DeleteData()
功能说明:删除当前记录.

详细解释:
    
出入参数:
[in]: 无.
     
[out]:无.

返回类型:void.

制作:YTLI   2002/07/15

修改: 
***********************************************************************************/
void CFields::DeleteData()
{	
	int nOldVersion = m_nCurVersion;

	SetCurVersion();

	for (int i= 0;i<m_FieldArray.GetSize();i++)
	{
		CField* pField = (CField*)m_FieldArray.GetAt(i);
		if(pField)
			pField->DeleteData();
	}
/*
	POSITION pos = m_FieldList.GetHeadPosition();
	while(pos)
	{
		CField* pField = m_FieldList.GetNext(pos);
		
		if(pField)
			pField->DeleteData();
	}
*/
	SetCurVersion(nOldVersion);		
}
コード例 #4
0
ファイル: cfields.cpp プロジェクト: adoggie/algorithm_package
/************************************************************************************
函数名称:

功能说明:字段移动

出入参数:
[in]: 
      1.nFrom,原来的索引号
	  2.nTo,移动到的新的索引号(注意是相对老字段还在时的位置)
返回类型:void.

制作://#_S 2003-9-12 $ 10 zlq

修改: 
************************************************************************************/
void CFields::Mov(int nFrom, int nTo)
{
	m_FieldVersion.Mov(nFrom,nTo);
	SetCurVersion();
}
コード例 #5
0
ファイル: cfields.cpp プロジェクト: adoggie/algorithm_package
//字段类型修改
void CFields::Modify(int nIndex, CField* pNewField)
{	
	m_FieldVersion.Modify(nIndex,FieldByIndex(nIndex), pNewField);
///////////////////////////////////////////////{{lps added.2003/02/18
	CField* pOldFld = FieldByIndex(nIndex);

	LPBYTE pOldValue = pNewField->m_pValue;

	POSITION posData = pNewField->m_ValueLabel.m_DataList.GetHeadPosition();	
	
	while(posData)
	{
		pNewField->m_pValue = (LPBYTE)pNewField->m_ValueLabel.m_DataList.GetNext( posData );
		pNewField->RealDeleteData();	
	}
	pNewField->m_ValueLabel.m_DataList.RemoveAll();
	pNewField->m_ValueLabel.m_strLabelList.RemoveAll();

	posData = pOldFld->m_ValueLabel.m_DataList.GetHeadPosition();
    int posStr  = pOldFld->m_ValueLabel.m_strLabelList.GetSize();
    int nPos = 0;
	while(posData != NULL && nPos < posStr)
	{

 		LPBYTE pData = (LPBYTE)pOldFld->m_ValueLabel.m_DataList.GetNext( posData );
		CTString strLabel = pOldFld->m_ValueLabel.m_strLabelList.GetAt(nPos);
		pOldFld->m_ValueLabel.m_pField->m_pValue = pData;//~~~~~~~~~~~~~~~~~~~~~~~~~
		pNewField->RealNewData();
		//从日期字段转化到其他类型,或者从其他字段转化到日期字段.
		if((pOldFld->GetFieldType() == fDate)
			||(pNewField->GetFieldType() == fDate))
		{
			FILETIME ftValue = pOldFld->m_ValueLabel.m_pField->GetAsDateTime();
			//填入不成功,则m_pValue无效.
			if(!pNewField->SetAsDateTime(&ftValue))
			{
				pNewField->m_pValue = pOldValue;
				pNewField->RealDeleteData();
				continue;
			}
		}
		else
		{
			CTString strr = pOldFld->m_ValueLabel.m_pField->GetAsString();
			//填入不成功,则m_pValue无效.此时的原则:留下可以转换的,抛弃无法转化的.
			//比如fString型串"2002/01/30"转换为fInt,fDouble等时将为false.
			if(!pNewField->SetAsString(strr))
			{
				pNewField->m_pValue = pOldValue;
				pNewField->RealDeleteData();
				continue;
			}
		}
	
		pNewField->m_ValueLabel.m_DataList.AddTail(pNewField->m_pValue);

        //取得label字符串然后添加在当前对象中相应的链表中
	//	CTString str = pValueLabel->m_strLabelList.GetNext(posStr);
		pNewField->m_ValueLabel.m_strLabelList.Add(strLabel);
		nPos++;
	}
	//assert(posData == NULL && posStr == NULL);
	pNewField->m_pValue = pOldValue;
///////////////////////////////////////////////}}
	SetCurVersion();
}
コード例 #6
0
ファイル: cfields.cpp プロジェクト: adoggie/algorithm_package
//在nIndex处插入一个字段.
void CFields::Insert(CField* pField , int nIndex)
{
	m_FieldVersion.Insert(pField , nIndex);
	SetCurVersion();
}
コード例 #7
0
ファイル: cfields.cpp プロジェクト: adoggie/algorithm_package
//删除在nIndex处的一个字段.
bool CFields::Delete(int nIndex )
{
	m_FieldVersion.Delete(nIndex);
	SetCurVersion();
	return true;
}
コード例 #8
0
/***********************************************************************************
 * ����� ���� �����
 */
void CVFS_Manager::SetCurVersion (DWORD dwVersion)
{
	SetCurVersion ( HIWORD(dwVersion), LOWORD(dwVersion) );
}