读书人

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

发布时间: 2012-04-04 16:38:51 作者: rapoo

哪位大神帮忙解读一下这个程序。
刚接触编程,下面的这段程序看不太懂。请哪位大神帮忙解读一下,写个注释。
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

读书人网 >C++

热点推荐