Exemple #1
0
void CdSqlQuery::SerializeSqlControl(CArchive& ar)
{
	if (ar.IsStoring())
	{
		CuSqlQueryControl* pCtrl = GetSqlQueryCtrl();
		ASSERT(pCtrl);
		if (!pCtrl)
			return;
		IStream* pStream = m_sqlStream.Detach();
		if (pStream)
			pStream->Release();

		pCtrl->Storing((LPUNKNOWN*)(&pStream));
		if (pStream)
		{
			m_sqlStream.Attach(pStream);
			m_sqlStream.SeekToBegin();
			CArchiveFromIStream(ar, pStream);
		}
	}
	else
	{
		IStream* pStream = m_sqlStream.Detach();
		if (pStream)
			pStream->Release();
		CArchiveToIStream  (ar, &pStream);
		if (pStream)
			m_sqlStream.Attach(pStream);
	}
}
Exemple #2
0
// ************************************************************************************************
//                                 LOCAL FUNCTIONS
// ************************************************************************************************
static HRESULT CopyGroups2Stream(CTypedPtrList< CObList, CmtGroup* >& listObject, IStream*& pStream)
{
	HRESULT hError = NOERROR;
	IStream* pStreamBuffer = NULL;
	//
	// Prepare to transfer data through the ISream interface:
	try
	{
		CMemFile file;
		CArchive ar(&file, CArchive::store);

		//
		// List of objects to store to the Archive;
		CTypedPtrList <CObList, CaGroup*> listObject2Store;
		//
		// Write the individual object:
		CaGroup* pObj = NULL;
		POSITION pos = listObject.GetHeadPosition();
		while (pos != NULL)
		{
			CmtGroup* pMtObj = listObject.GetNext(pos);
			pMtObj->GetGroup (pObj);
			listObject2Store.AddTail (pObj);
		}

		//
		// Serialize the list of objects and cleanup the list.
		listObject2Store.Serialize (ar);
		while (!listObject2Store.IsEmpty())
			delete listObject2Store.RemoveHead();
		//
		// Force everything to be written to File (memory file)
		ar.Flush();
		CArchiveToIStream (ar, &pStreamBuffer);
	}
	catch (...)
	{
		hError = E_FAIL;
		if (pStreamBuffer)
			pStreamBuffer->Release();
		pStreamBuffer = NULL;
	}

	pStream = pStreamBuffer;
	return hError;
}