首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

哪位大神帮忙解读一下这个程序。该怎么处理

2012-04-04 
哪位大神帮忙解读一下这个程序。刚接触编程,下面的这段程序看不太懂。请哪位大神帮忙解读一下,写个注释。void

哪位大神帮忙解读一下这个程序。
刚接触编程,下面的这段程序看不太懂。请哪位大神帮忙解读一下,写个注释。
void CElVeDlg::DataBaseForCharger()
{
char sql[2048];
char buffer[64];
ZeroMemory( sql, sizeof( sql ) );
  ZeroMemory( buffer, sizeof( buffer ) );
sprintf( sql, "INSERT INTO Charger VALUES( %d," ,m_ApplicationContext.m_pAdoContext->m_usIndexForCharger);
m_ApplicationContext.m_pAdoContext->m_usIndexForCharger++;

sprintf( 
buffer, 
"'%02d:%02d:%02d'", 
m_ApplicationContext.m_pTime->m_cHour, 
m_ApplicationContext.m_pTime->m_cMinute,
m_ApplicationContext.m_pTime->m_cSecond);
strcat( sql, buffer ); 
   
sprintf( buffer, ",%f", PowerCounter);
strcat( sql, buffer ); 
  ChargerContext * m_pCharger = NULL;
m_pCharger = m_ApplicationContext.m_pCharger;
for( BYTE i = 0; i < m_ApplicationContext.m_ucChargerNum; i++,m_pCharger++)
{
ZeroMemory( buffer, sizeof( buffer ) );
sprintf( buffer, ",%d", m_pCharger->m_usTimeCounter);
strcat( sql, buffer ); 

}
   
ZeroMemory( buffer, sizeof( buffer ) );
sprintf( buffer, ")");
strcat( sql, buffer ); 

_bstr_t sqlcmd(sql);

try
{
m_ApplicationContext.m_pAdoContext->m_pConnection->Execute( 
sqlcmd, 
NULL, 
ADODB::adExecuteNoRecords );  
}

#ifdef _DEBUG
catch( _com_error & e ) 
{
AfxMessageBox(e.Description(), MB_OK );
m_ApplicationContext.m_pApplicationFlag->bit.timetostop = 1;
}
#else 
catch( ... ) 
{
m_ApplicationContext.m_pApplicationFlag->bit.timetostop = 1;

#endif 

}


[解决办法]

C/C++ code
void CElVeDlg::DataBaseForCharger(){    char sql[2048];    char buffer[64];    ZeroMemory( sql, sizeof( sql ) );//用0填充数组sql内存    ZeroMemory( buffer, sizeof( buffer ) );//同上    sprintf( sql, "INSERT INTO Charger VALUES( %d," ,m_ApplicationContext.m_pAdoContext->m_usIndexForCharger);    //把串INSERT INTO Charger VALUES( %d,写到sql,其中的%d会替换成后面的那个变量的值,同printf格式控制    //函数原型:int sprintf( char *buffer, const char *format [, argument] ... );    m_ApplicationContext.m_pAdoContext->m_usIndexForCharger++;        sprintf(         buffer,         "'%02d:%02d:%02d'",         m_ApplicationContext.m_pTime->m_cHour,         m_ApplicationContext.m_pTime->m_cMinute,        m_ApplicationContext.m_pTime->m_cSecond);//同上    strcat( sql, buffer ); //把sql,buffer中的字符串连接成一个串,并存到sql中        sprintf( buffer, ",%f", PowerCounter);    strcat( sql, buffer );     ChargerContext * m_pCharger = NULL;    m_pCharger = m_ApplicationContext.m_pCharger;    for( BYTE i = 0; i < m_ApplicationContext.m_ucChargerNum; i++,m_pCharger++)    {        ZeroMemory( buffer, sizeof( buffer ) );        sprintf( buffer, ",%d", m_pCharger->m_usTimeCounter);        strcat( sql, buffer );             }        ZeroMemory( buffer, sizeof( buffer ) );    sprintf( buffer, ")");    strcat( sql, buffer );         _bstr_t sqlcmd(sql);//_bstr_t是个类,具体查MSDN//下面是异常处理        try    {        m_ApplicationContext.m_pAdoContext->m_pConnection->Execute(             sqlcmd,             NULL,             ADODB::adExecuteNoRecords );      }    #ifdef _DEBUG    catch( _com_error & e )     {        AfxMessageBox(e.Description(), MB_OK );        //API(MFC)中的对话框函数,提示内容:e.Description()返回的字符串,对话框只有确定按钮        m_ApplicationContext.m_pApplicationFlag->bit.timetostop = 1;    }#else     catch( ... )     {        m_ApplicationContext.m_pApplicationFlag->bit.timetostop = 1;    } #endif     } 


[解决办法]
ChargerContext * m_pCharger = NULL;

申明一个指针,类型为ChargerContext ,并初始化为NULL

热点排行