亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? database.cpp

?? 股票軟件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*
	Cross Platform Core Code.

	Copyright(R) 2001-2002 Balang Software.
	All rights reserved.

	Using:
		DllMain( HANDLE, DWORD, LPVOID );
		class	CStDatabase;
*/

#include	"StdAfx.h"
#include	"Database.h"
#include	"SpString.h"
#include	<direct.h>
#include	"SelfDB.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

////////////////////////////////////////////////////////////////////////////////////////////
//	convertor

BOOL convert_TYDAY_RECORD_to_KDATA( TYDAY_RECORD * precord, KDATA * pkd )
{
	SP_ASSERT( precord && pkd );
	if( NULL == precord || NULL == pkd )
		return FALSE;
	memset( pkd, 0, sizeof(KDATA) );

	pkd->m_dwMarket	=	CStock::marketUnknown;
	strncpy( pkd->m_szCode, precord->code, min(sizeof(pkd->m_szCode)-1,sizeof(precord->code)) );

	pkd->m_date		=	precord->date;
	CSPTime	sptime;
	if( sptime.FromStockTimeDay(pkd->m_date) )
		pkd->m_time	=	sptime.GetTime();

	pkd->m_fOpen	=	(float)( precord->open * 0.001 );
	pkd->m_fHigh	=	(float)( precord->high * 0.001 );
	pkd->m_fLow		=	(float)( precord->low * 0.001 );
	pkd->m_fClose	=	(float)( precord->close * 0.001 );
	pkd->m_fAmount	=	(float)( precord->amount * 1000. );
	pkd->m_fVolume	=	(float)( precord->volume * 100. );
	return TRUE;
}

BOOL convert_TYDAY_RECORD_MIN_to_KDATA( TYDAY_RECORD * precord, KDATA * pkd )
{
	SP_ASSERT( precord && pkd );
	if( NULL == precord || NULL == pkd )
		return FALSE;
	memset( pkd, 0, sizeof(KDATA) );

	pkd->m_dwMarket	=	CStock::marketUnknown;
	strncpy( pkd->m_szCode, precord->code, min(sizeof(pkd->m_szCode)-1,sizeof(precord->code)) );

	pkd->m_date		=	precord->date;
	CSPTime	sptime;
	if( sptime.FromStockTimeDay(pkd->m_date) )
		pkd->m_time	=	sptime.GetTime();

	pkd->m_fOpen	=	(float)( precord->open * 0.001 );
	pkd->m_fHigh	=	(float)( precord->high * 0.001 );
	pkd->m_fLow		=	(float)( precord->low * 0.001 );
	pkd->m_fClose	=	(float)( precord->close * 0.001 );
	pkd->m_fAmount	=	(float)( precord->amount * 100. );
	pkd->m_fVolume	=	(float)( precord->volume * 100. );
	return TRUE;
}

BOOL convert_KDATA_to_TYDAY_RECORD( DWORD dwSerial, const char * name, KDATA * pkd, TYDAY_RECORD * precord )
{
	SP_ASSERT( precord && pkd );
	if( NULL == precord || NULL == pkd )
		return FALSE;
	memset( precord, 0, sizeof(TYDAY_RECORD) );

	precord->magic	=	0x06;
	precord->magic2	=	0x08;
	
	strncpy( precord->code, pkd->m_szCode, min(sizeof(precord->code),sizeof(pkd->m_szCode)) );
	if( name )
		strncpy( precord->name, name, min(sizeof(precord->name),strlen(name)) );

	precord->date		=	pkd->m_date;
	
	precord->open	=	(DWORD)( pkd->m_fOpen * 1000 );
	precord->high	=	(DWORD)( pkd->m_fHigh * 1000 );
	precord->low	=	(DWORD)( pkd->m_fLow * 1000 );
	precord->close	=	(DWORD)( pkd->m_fClose * 1000 );
	precord->amount	=	(DWORD)( pkd->m_fAmount * 0.001 );
	precord->volume	=	(DWORD)( pkd->m_fVolume * 0.01 );
	precord->serial	=	dwSerial;
	return TRUE;
}

BOOL convert_KDATA_to_TYDAY_RECORD_MIN( DWORD dwSerial, const char * name, KDATA * pkd, TYDAY_RECORD * precord )
{
	SP_ASSERT( precord && pkd );
	if( NULL == precord || NULL == pkd )
		return FALSE;
	memset( precord, 0, sizeof(TYDAY_RECORD) );

	precord->magic	=	0x06;
	precord->magic2	=	0x08;
	
	strncpy( precord->code, pkd->m_szCode, min(sizeof(precord->code),sizeof(pkd->m_szCode)) );
	if( name )
		strncpy( precord->name, name, min(sizeof(precord->name),strlen(name)) );

	precord->date		=	pkd->m_date;
	
	precord->open	=	(DWORD)( pkd->m_fOpen * 1000 );
	precord->high	=	(DWORD)( pkd->m_fHigh * 1000 );
	precord->low	=	(DWORD)( pkd->m_fLow * 1000 );
	precord->close	=	(DWORD)( pkd->m_fClose * 1000 );
	precord->amount	=	(DWORD)( pkd->m_fAmount * 0.01 );
	precord->volume	=	(DWORD)( pkd->m_fVolume * 0.01 );
	precord->serial	=	dwSerial;
	return TRUE;
}

BOOL convert_FXJDAY_RECORD_to_KDATA( DWORD dwMarket, LPCTSTR lpszCode, int nKType, FXJDAY_RECORD *precord, KDATA *pkd )
{
	SP_ASSERT( precord && pkd && lpszCode );
	if( NULL == precord || NULL == pkd )
		return FALSE;
	memset( pkd, 0, sizeof(KDATA) );

	pkd->m_dwMarket	=	dwMarket;
	strncpy( pkd->m_szCode, lpszCode, min(sizeof(pkd->m_szCode)-1,strlen(lpszCode)) );

	pkd->m_time		=	precord->m_time;
	CSPTime	sptime(pkd->m_time);
	pkd->m_date		=	sptime.ToStockTime( CKData::IsDayOrMin(nKType) );

	pkd->m_fOpen	=	precord->open;
	pkd->m_fHigh	=	precord->high;
	pkd->m_fLow		=	precord->low;
	pkd->m_fClose	=	precord->close;
	pkd->m_fAmount	=	precord->amount;
	pkd->m_fVolume	=	(float)( precord->volume * 100. );
	return TRUE;
}

////////////////////////////////////////////////////////////////////////////////////////////
//	class	CStDatabase

CStDatabase::CStDatabase()
{
	m_pStore	=	NULL;
}

CStDatabase::~CStDatabase()
{
	if( m_pStore )
	{
		delete m_pStore;
		m_pStore	=	NULL;
	}

	for( int i=0; i<m_aptrAssistant.GetSize(); i++ )
	{
		IStStore	* pStore	=	(IStStore *)m_aptrAssistant.ElementAt(i);
		if( pStore )
			delete	pStore;
	}
	m_aptrAssistant.RemoveAll();
}

BOOL CStDatabase::CreateSelfDB( const char * rootpath )
{
	return CSelfDB::CreateSelfDB( rootpath );
}

int	CStDatabase::IsValidDataType ( int nType )
{
	return IStStore::IsValidDataType( nType );
}

int	CStDatabase::GetSupportedDataType ( CDBType * pdbtype, int maxsize )
{
	return IStStore::GetSupportedDataType( pdbtype, maxsize );
}

BOOL CStDatabase::SetRootPath( const char * rootpath, int nDBType )
{
	if( m_pStore )
		delete m_pStore;
	m_pStore	=	IStStore::CreateStore( rootpath, nDBType );
	return (NULL != m_pStore);
}

BOOL CStDatabase::IsOK( )
	{ return m_pStore && m_pStore->IsOK(); }
const char *CStDatabase::GetRootPath( )
	{ if(!IsOK()) return NULL; return m_pStore->GetRootPath(); }
int	CStDatabase::GetDBType( )
	{ if(!IsOK()) return IStStore::dbtypeUnknown; return m_pStore->GetDBType(); }
const char *CStDatabase::GetDBTypeName( )
	{ if(!IsOK()) return NULL;	return m_pStore->GetDBTypeName(); }

DWORD CStDatabase::GetSelfTempPath( char *szTempPath, int size )
{
	const char *szRoot = GetRootPath();
	if( 0 == strlen( szRoot ) )
	{
		if( NULL != szTempPath && size > 0 )
			szTempPath[0]	=	'\0';
		return 0;
	}

	char szReturn[MAX_PATH+1];
	memset( szReturn, 0, sizeof(szReturn) );
	strncpy( szReturn, szRoot, MAX_PATH );
	strncat( szReturn, "temp", MAX_PATH-strlen(szReturn) );
	strncat( szReturn, STRING_DIRSEP, MAX_PATH-strlen(szReturn) );
	

	BOOL	bCreated	=	TRUE;
	if( 0 != access(szReturn,0) )
		bCreated = (0==_mkdir(szReturn));
	if( !bCreated )
	{
		if( NULL != szTempPath && size > 0 )
			szTempPath[0]	=	'\0';
		return 0;
	}
	strncpy( szTempPath, szReturn, size );
	return strlen(szReturn);
}

BOOL CStDatabase::GetLastErrorMessage(LPTSTR lpszError, UINT nMaxError)
{
	if( nMaxError > 0 )
		lpszError[0]	=	'\0';
	return FALSE;
}

int	CStDatabase::GetMaxStockNumber( )
{
	if(!IsOK())	return 0;

	int nSize = m_pStore->GetMaxStockNumber();
	if( nSize > 0 )
		return nSize;

	for( int i=0; i<m_aptrAssistant.GetSize(); i++ )
	{
		IStStore	* pStore	=	(IStStore *)m_aptrAssistant.ElementAt(i);
		nSize	=	pStore->GetMaxStockNumber();
		if( nSize > 0 )
			return nSize;
	}
	return nSize;
}

int CStDatabase::LoadCodetable( CStockContainer & container )
{
	if(!IsOK())	return 0;

	int nSize = m_pStore->LoadCodetable( container );
	if( nSize > 0 )
		return nSize;

	for( int i=0; i<m_aptrAssistant.GetSize(); i++ )
	{
		IStStore	* pStore	=	(IStStore *)m_aptrAssistant.ElementAt(i);
		nSize	=	pStore->LoadCodetable( container );
		if( nSize > 0 )
			return nSize;
	}
	return nSize;
}

int CStDatabase::StoreCodetable( CStockContainer & container )
	{ if(!IsOK()) return 0;	return m_pStore->StoreCodetable( container ); }

int CStDatabase::LoadKDataCache( CStockContainer & container, PROGRESS_CALLBACK fnCallback, void *cookie, int nProgStart, int nProgEnd )
{
	if(!IsOK())	return 0;

	int nSize = m_pStore->LoadKDataCache( container, fnCallback, cookie, nProgStart, nProgEnd );
	if( nSize > 0 )
		return nSize;

	for( int i=0; i<m_aptrAssistant.GetSize(); i++ )
	{
		IStStore	* pStore	=	(IStStore *)m_aptrAssistant.ElementAt(i);
		nSize	=	pStore->LoadKDataCache( container, fnCallback, cookie, nProgStart, nProgEnd );
		if( nSize > 0 )
			return nSize;
	}
	return nSize;
}

int CStDatabase::LoadBasetable( CStockContainer & container )
	{ if(!IsOK()) return 0;	return m_pStore->LoadBasetable( container ); }
int CStDatabase::StoreBasetable( CStockContainer & container )
	{ if(!IsOK()) return 0;	return m_pStore->StoreBasetable( container ); }

int CStDatabase::LoadBaseText( CStock *pstock )
{
	if( !pstock || !IsOK() )	return 0;

	int nSize = m_pStore->LoadBaseText( pstock );
	if( nSize > 0 )
		return nSize;

	for( int i=0; i<m_aptrAssistant.GetSize(); i++ )
	{
		IStStore	* pStore	=	(IStStore *)m_aptrAssistant.ElementAt(i);
		CStock	stock;
		stock.SetStockInfo( &(pstock->GetStockInfo()) );
		if( pStore && pStore->LoadBaseText( &stock ) > 0 )
		{
			nSize	=	pstock->MergeBaseText( stock );
		}
	}
	return nSize;
}

int CStDatabase::LoadKData( CStock *pstock, int period )
{
	if( !pstock || !IsOK())	return 0;

	int nSize = m_pStore->LoadKData( pstock, period );

	for( int i=0; i<m_aptrAssistant.GetSize(); i++ )
	{
		IStStore	* pStore	=	(IStStore *)m_aptrAssistant.ElementAt(i);
		CStock	stock;
		stock.SetStockInfo( &(pstock->GetStockInfo()) );
		if( pStore->LoadKData( &stock, period ) > 0 )
		{
			nSize	=	pstock->MergeKData( stock, period );
		}
	}
	return nSize;
}

int CStDatabase::LoadDRData( CStock *pstock )
{
	if( !pstock || !IsOK() )
		return 0;

	int nSize = m_pStore->LoadDRData( pstock );

	for( int i=0; i<m_aptrAssistant.GetSize(); i++ )
	{
		IStStore	* pStore	=	(IStStore *)m_aptrAssistant.ElementAt(i);
		CStock	stock;
		stock.SetStockInfo( &(pstock->GetStockInfo()) );
		if( pStore && pStore->LoadDRData( &stock ) > 0 )
		{
			nSize	=	pstock->MergeDRData( stock );
		}
	}
	return nSize;
}

int CStDatabase::StoreDRData( CStock *pstock )
	{	if(!IsOK()) return 0;
		return m_pStore->StoreDRData( pstock );	}

int CStDatabase::LoadReport( CStock *pstock )
{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女同ⅹxx女同tv| 91精品免费在线| 亚洲国产中文字幕| 久久精品欧美日韩精品| 欧美色精品天天在线观看视频| 九色porny丨国产精品| 一区二区三区国产豹纹内裤在线| 午夜在线成人av| 亚洲国产成人自拍| 日韩欧美一卡二卡| 欧美精选午夜久久久乱码6080| 国产精一品亚洲二区在线视频| 亚洲电影你懂得| 亚洲女同ⅹxx女同tv| 国产精品欧美一区二区三区| 久久网这里都是精品| 欧美高清视频不卡网| 色激情天天射综合网| 成人午夜在线播放| 国产精品自拍毛片| 久久精品国产99国产精品| 无码av免费一区二区三区试看| 综合久久久久久久| 日韩一区在线播放| 亚洲国产精品av| 久久精品一区二区三区av | 在线观看不卡一区| 成人丝袜视频网| 成人黄色av网站在线| 成人综合婷婷国产精品久久 | 欧美三级韩国三级日本一级| 99国产精品久| 99久久久免费精品国产一区二区| 国产成人一区在线| 国产久卡久卡久卡久卡视频精品| 极品少妇一区二区三区精品视频| 秋霞电影一区二区| 精品一区二区在线视频| 青娱乐精品视频| 免费成人在线影院| 免费成人av资源网| 麻豆成人91精品二区三区| 免费视频一区二区| 久久成人免费网| 精品在线观看视频| 国产成人av影院| 懂色av一区二区在线播放| 丰满白嫩尤物一区二区| 99久久免费视频.com| 97精品久久久久中文字幕| 91免费视频网| 91麻豆精品国产91久久久久久久久 | 亚洲午夜久久久久久久久电影院 | 亚洲曰韩产成在线| 日韩—二三区免费观看av| 美女网站在线免费欧美精品| 精一区二区三区| 国产成人精品三级麻豆| www.欧美亚洲| 欧美性欧美巨大黑白大战| 欧美一区二区三区不卡| 另类小说图片综合网| 久久99久久精品欧美| 国产成人亚洲综合a∨婷婷图片 | 欧美精品一区二区三区高清aⅴ| 精品久久久久久久人人人人传媒 | 黑人精品欧美一区二区蜜桃| 国产精品一区二区黑丝| 99精品久久只有精品| 欧美日韩国产影片| 久久久无码精品亚洲日韩按摩| 中文字幕不卡在线| 亚洲国产欧美在线人成| 国产自产高清不卡| 日本韩国精品在线| 精品国免费一区二区三区| 国产精品对白交换视频| 日韩av午夜在线观看| 成人免费黄色在线| 欧美精品久久一区| 久久久99精品久久| 亚洲国产精品自拍| 岛国一区二区三区| 欧美裸体一区二区三区| 中文一区二区完整视频在线观看| 亚洲影视资源网| 国产传媒日韩欧美成人| 欧美日韩国产高清一区二区 | 综合精品久久久| 卡一卡二国产精品| 色欧美88888久久久久久影院| 日韩午夜av一区| 亚洲女同一区二区| 国产精品资源网| 欧美一区二区三级| 一区二区三区欧美日韩| 国产精品99久久久久久久女警| 欧美老肥妇做.爰bbww| 成人欧美一区二区三区黑人麻豆| 欧美日韩精品一区二区三区四区| 国产色婷婷亚洲99精品小说| 人人精品人人爱| 欧美午夜精品免费| 国产精品久久久久aaaa| 国产在线精品一区在线观看麻豆| 欧美一a一片一级一片| 国产精品久久精品日日| 国产一区二区不卡老阿姨| 欧美日韩不卡在线| 亚洲精选一二三| 97久久久精品综合88久久| 久久蜜桃一区二区| 精品中文字幕一区二区 | 亚洲女女做受ⅹxx高潮| 国产一区不卡在线| 精品乱码亚洲一区二区不卡| 日韩高清国产一区在线| 欧美日韩国产综合视频在线观看 | 91免费视频大全| 国产精品卡一卡二| 国产成人日日夜夜| 久久午夜色播影院免费高清| 久久91精品国产91久久小草| 欧美精品黑人性xxxx| 亚洲精品成人悠悠色影视| 91麻豆蜜桃一区二区三区| 中文字幕乱码久久午夜不卡 | 成人高清视频在线| 中文字幕精品一区二区三区精品| 国产一区欧美一区| 久久久综合网站| 国产精品一卡二卡在线观看| 国产亚洲va综合人人澡精品| 国产在线一区观看| 麻豆91在线看| 精品噜噜噜噜久久久久久久久试看 | 色哟哟在线观看一区二区三区| 国产精品国产精品国产专区不片| 成人丝袜视频网| 亚洲人成网站精品片在线观看| 91片在线免费观看| 亚洲一区二区五区| 欧美区一区二区三区| 石原莉奈一区二区三区在线观看| 欧美电影一区二区三区| 蜜臀精品久久久久久蜜臀| 精品国产伦理网| 国产精品88av| 亚洲欧洲另类国产综合| 日本乱人伦aⅴ精品| 亚洲一区二区视频在线观看| 欧美日韩在线免费视频| 免费看黄色91| 久久精品亚洲麻豆av一区二区 | 欧洲视频一区二区| 午夜在线成人av| 精品欧美乱码久久久久久 | 99久久伊人网影院| 亚洲成人综合网站| 欧美tickling网站挠脚心| 国产一区二区三区高清播放| 国产精品久久久久久福利一牛影视| 97se狠狠狠综合亚洲狠狠| 亚洲成人7777| 久久久久九九视频| 91免费版在线| 免费在线观看一区二区三区| 中文字幕精品三区| 欧美日韩激情一区| 国产精品资源网站| 亚洲综合成人在线视频| 精品剧情在线观看| 色综合视频在线观看| 青青草原综合久久大伊人精品优势| 国产日韩欧美精品在线| 欧美日韩一区小说| 国产精品小仙女| 日韩国产欧美在线视频| 国产精品色在线观看| 在线播放国产精品二区一二区四区 | 欧美精品粉嫩高潮一区二区| 国产精品99久| 天天亚洲美女在线视频| 国产精品亲子伦对白| 91精品国产综合久久国产大片| 国产成人午夜高潮毛片| 日韩电影网1区2区| **网站欧美大片在线观看| 日韩欧美一级二级| 91视频xxxx| 国产精品99久久久久久久vr | 国产精品三级视频| 日韩一区二区免费在线观看| 91美女片黄在线观看| 韩国成人福利片在线播放| 午夜精品成人在线| 亚洲视频小说图片| 精品国产一二三区| 欧美日本一区二区三区| 一本高清dvd不卡在线观看|