塑胶瓶注吹工艺控制软件

  • 格式:doc
  • 大小:330.00 KB
  • 文档页数:60

#ifndef HandleThreadH#define HandleThreadH#include <scktcomp.hpp>#include "TaskHandle.h"//const BUFLEN = ;const MAXTHREADS = ;class THandleThread : public TThread{char szBody[];unsigned int nBodyLen;int nChannelNo;int nSerial;AnsiString asModule;int nCmd;AnsiString asTel;bool IsDigits( const char *src, unsigned int nLen);TTaskHandler *InvestHandle(char *pBuf);//int CharsToInt( const char *src, unsigned int nLen);//int GetWord( const char *src, char *dest, int index, char sep );int DispatchTask();public://static CRITICAL_SECTION csSocket;static CRITICAL_SECTION csThrdCnt;static int nThreadCount;fastcall THandleThread( char *pBuf, unsigned int nLen, bool CreateSuspended );virtual fastcall ~THandleThread();vo fastcall Execute();#endif// HandleThread.cpp#pragma hdrstop#include "HandleThread.h"#include "SockToIVR.h"#include "LogInvoker.h"#include "QueryHandle.h"#include "InvestHandle.h"#include "MoneyTransHandle.h"#include "CustomerHandle.h"#include "RegisteHandle.h"CRITICAL_SECTION THandleThread::csThrdCnt;int THandleThread::nThreadCount = ;vo fastcall TVSEServerThread::SessionConnected(TObject *Sender,TCustomWinSocket *Socket){LogMessageParam MsParam;MsParam.FunctionNo = FEE_SVR_SessionConnected;if(Socket->RemoteAddress.Trim() != pConfMaster->VSELocalBindRemote){MsParam.LogType = enuVSE;MsParam.SystemLogMess = Socket->RemoteAddress.Trim() + AnsiStringSocket->Close();}else{MsParam.LogType = enuVSE;MsParam.SystemLogMess = Socket->RemoteAddress.Trim()VSEClient = Socket;clntCount++;}HandleLogMessage(&MsParam);StrLog = MsParam.SystemLogMess;//Synchronize(ShowLog);}vo fastcall TVSEServerThread::SessionClosed(TObject *Sender,TCustomWinSocket *Socket){LogMessageParam MsParam;MsParam.FunctionNo = FEE_SVR_SessionClosed;MsParam.LogType = enuVSE;MsParam.SystemLogMess = Socket->RemoteAddress.Trim()HandleLogMessage(&MsParam);if(Socket == VSEClient){VSEClient = NULL;clntCount--;}StrLog = MsParam.SystemLogMess;//Synchronize(ShowLog);}//vo fastcall TVSEServerThread::ProcessFrame(){EnterCriticalSection(&csProc);try{LogMessageParam MsParam;MsParam.FunctionNo = FEE_SVR_ProcessFrame;MsParam.LogType = enuVSE;while((iEnd+PROCBUFLEN-iStart)%PROCBUFLEN >= sizeof(TVSE_COM_Frame_Head)){if(ProcBuf[iStart] == xFE && ProcBuf[(iStart+)%PROCBUFLEN] == xDC && ProcBuf[(iStart+)%PROCBUFLEN] == xBA){TVSE_COM_Frame_Head *pFrameHead = (TVSE_COM_Frame_Head *)(&ProcBuf[iStart]);if( ntohs(pFrameHead->BodyLength) < pConfMaster->VSEFrameMaxLength){int ValLen = ;if(((iEnd+PROCBUFLEN-iStart)%PROCBUFLEN) >= (ntohs(pFrameHead->BodyLength) + sizeof(TVSE_COM_Frame_Head))) //+sizeof(TVSE_COM_Frame_Head))//&& (pFrameHead->Tel[] >= '' && pFrameHead->Tel[] <= '')){WORD i;if (TVPThread::ThreadCount < ){TVPThread *pVPThread = new TVPThread();for(i = ; i < (WORD)(sizeof(TVSE_COM_Frame_Head) + ntohs(pFrameHead->BodyLength)) ; i++){pVPThread->OriBuf.Buffer[i] = ProcBuf[(iStart+i)%PROCBUFLEN];ValLen++;}pVPThread->OriBuf.iLength = i;pVPThread->Resume();}else{ZeroMemory(OriBuf.Buffer, MAXNETBUFFERLEN);for(i = ; i < (WORD)(sizeof(TVSE_COM_Frame_Head) + ntohs(pFrameHead->BodyLength)) ; i++){OriBuf.Buffer[i] = ProcBuf[(iStart+i)%PROCBUFLEN];ValLen++;}OriBuf.iLength = ValLen;ReplyNetBusyError();}iStart = (iStart + ValLen) % PROCBUFLEN;} else{try{MsParam.SystemLogMess/*char TempBuf[];ZeroMemory(TempBuf, );int PackLen = ntohs(pFrameHead->BodyLength) + sizeof(TVSE_COM_Frame_Head);if (PackLen >= )PackLen = ;memcpy(TempBuf, ProcBuf + iStart, PackLen);HandleLogMessage(&MsParam, TempBuf, PackLen); */HandleLogMessage(&MsParam);}finally{iStart = (iStart + ) % PROCBUFLEN;}MsParam.SystemLogMess/*char TempBuf[];ZeroMemory(TempBuf, );int PackLen = ntohs(pFrameHead->BodyLength) + sizeof(TVSE_COM_Frame_Head);if (PackLen >= )PackLen = ;memcpy(TempBuf, ProcBuf + iStart, PackLen); */HandleLogMessage(&MsParam);}finally{iStart = (iStart + ) % PROCBUFLEN;}} {iStart = (iStart+) % PROCBUFLEN;}LeaveCriticalSection(&csProc);}vo fastcall TVSEServerThread::VSEServerClientError(TObject *Sender,TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode){ LogMessageParam MsParam;MsParam.FunctionNo = FEE_SVR_VSEServerClientError;MsParam.LogType = enuVSE;MsParam.SystemLogMess = Socket->RemoteAddress.Trim()HandleLogMessage(&MsParam);}finally{ErrorCode = ;}vo TVSEServerThread::ReplyNetBusyError(){WORD wCmd = ;VSENetCommBuf VSEResult; //Frame return to VSE.TVSE_ANS_Frame_Head *pFrameHead;LogMessageParam MsParam;MsParam.FunctionNo = FEE_SVR_ReplyNetBusyError;try{TVSE_COM_Frame_Head *pComFrameHead = (TVSE_COM_Frame_Head *)OriBuf.Buffer;pFrameHead = (TVSE_ANS_Frame_Head *)VSEResult.Buffer;memcpy(pFrameHead->SyncHead,pComFrameHead->SyncHead,);pFrameHead->Cmd = pComFrameHead->Cmd;memcpy(pFrameHead->SerialNum,pComFrameHead->SerialNum,);wCmd = ntohs(pFrameHead->Cmd);MsParam.Cmd = wCmd;MsParam.SerialNumOri = Trim(AnsiString(pFrameHead->SerialNum, ));erNumber = pComFrameHead->Tel;switch(wCmd){case COM_REG_USER :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_REG_USER));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_REG_USER);break;case COM_CARD_CHANGE :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_CARD_CHANGE));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_CARD_CHANGE);break;case COM_REG_FEE_INFORM :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_REG_FEE_INFORM));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_REG_FEE_INFORM);break;case COM_REG_MAIL_INVOICE :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_REG_MAIL_INVOICE));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_REG_MAIL_INVOICE);break;case COM_UNREG_USER :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_UNREG_USER));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_UNREG_USER);break;case COM_UNREG_FEE_INFORM :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_UNREG_FEE_INFORM));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_UNREG_FEE_INFORM);break;case COM_UNREG_MAIL_INVOICE :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_UNREG_MAIL_INVOICE));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_UNREG_MAIL_INVOICE);break;case COM_QRY_BANK_BALANCE :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_QRY_BANK_BALANCE));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_QRY_BANK_BALANCE);break;case COM_QRY_FEEINFO :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_QRY_FEEINFO));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_QRY_FEEINFO);break;case COM_PAY_FEE :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_PAY_FEE));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_PAY_FEE);break;case COM_QRY_SYSCONFIG :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_QRY_SYSCONFIG));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_QRY_SYSCONFIG);break;case COM_GET_USERINFO :sprintf(pFrameHead->Result ,"E");pFrameHead->BodyLength = htons(sizeof(TVSE_ANS_GET_USERINFO));VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head) + sizeof(TVSE_ANS_GET_USERINFO);break;case COM_CHECK_LIVE :VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head);break;case COM_REG__CARD :sprintf(pFrameHead->Result, "E");VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head);pFrameHead->BodyLength = htons();break;default:VSEResult.iLength = sizeof(TVSE_ANS_Frame_Head);break;}}catch(Exception &e){sprintf(pFrameHead->Result,"E");MsParam.LogType = enuError;MsParam.SystemLogMess = ReplaceMessReturns(e.Message) + "E";if (wCmd == COM_QRY_BANK_BALANCE || wCmd == COM_PAY_FEE)HandleLogMessage(&MsParam, NULL, , false);elseHandleLogMessage(&MsParam, OriBuf.Buffer, OriBuf.iLength, false);}try{SendBuf(VSEResult.Buffer,VSEResult.iLength);MsParam.LogType = enuVSE;char tempBuf[];ZeroMemory(tempBuf, );memcpy(tempBuf, pFrameHead->Result, );MsParam.SystemLogMess + Trim(AnsiString(tempBuf, ));if (wCmd == COM_QRY_BANK_BALANCE || wCmd == COM_PAY_FEE)HandleLogMessage(&MsParam, NULL, , false);elseHandleLogMessage(&MsParam, VSEResult.Buffer, VSEResult.iLength, false);}catch (Exception &e){LogMessageParam MsParam;MsParam.LogType = enuError;char tempBuf[];ZeroMemory(tempBuf, );memcpy(tempBuf, pFrameHead->Result, );MsParam.SystemLogMess = ReplaceMessReturns(e.Message) + Trim(AnsiString(tempBuf, ));if (wCmd == COM_QRY_BANK_BALANCE || wCmd == COM_PAY_FEE)HandleLogMessage(&MsParam, NULL, , false);elseHandleLogMessage(&MsParam, VSEResult.Buffer,VSEResult.iLength, false);}vo fastcall TVSEServerThread::ShowLog(){ if (frmMain->CheckBoxDisFlag->Checked){frmMain->MemoInfo->Lines->BeginUpdate();if (frmMain->MemoInfo->Lines->Count > )frmMain->MemoInfo->Clear();frmMain->MemoInfo->Lines->Add(StrLog);frmMain->MemoInfo->Lines->EndUpdate();}// HandleThread.h#pragma package(smart_init)fastcall THandleThread :: THandleThread( char *pBuf, unsigned int nLen, bool CreateSuspended):TThread( CreateSuspended){FreeOnTerminate = true;memcpy(szBody, pBuf, nLen);nBodyLen = nLen;EnterCriticalSection(&csThrdCnt);nThreadCount++;LeaveCriticalSection(&csThrdCnt);}_fastcall THandleThread :: ~THandleThread(){EnterCriticalSection(&csThrdCnt);nThreadCount--;LeaveCriticalSection(&csThrdCnt);}vo fastcall THandleThread :: Execute(){char szTmp[];memset(szTmp, '\', sizeof(szTmp));char szBodyLen[];int nLen, i = ;memset(szBodyLen, '\', );try{if (GetWord(szBody, szBodyLen, i++, '|') == ){if (IsDigits(szBodyLen, strlen(szBodyLen))){if (atoi(szBodyLen)+strlen(szBodyLen) == nBodyLen){//pLog->SysLog(IVRMOD, "THandleThread::Execute",// "Orack", "Correct", szBody, nBodyLen);GetWord(szBody, szTmp, i++, '|');nChannelNo = atoi(szTmp);GetWord(szBody, szTmp, i++, '|');nSerial = atoi(szTmp);GetWord(szBody, szTmp, i++, '|');asModule = AnsiString(szTmp);GetWord(szBody, szTmp, i++, '|');nCmd = atoi(szTmp);GetWord(szBody, szTmp, i++, '|');asTel = AnsiString(szTmp);//pLog->WriteDbgLog(, IVRMOD, "THandleThread::Execute",// "Step", szTmp, strlen(szTmp) );DispatchTask();}pLog->SysLog(IVRMOD, "THandleThread::Execute","Package", "Length Error", szBody, strlen(szBody));}pLog->SysLog(IVRMOD, "THandleThread::Execute","Package", "Field Error", szBody, strlen(szBody));}pLog->SysLog(IVRMOD, "THandleThread::Execute", "Package","Error", szBody, strlen(szBody));}pLog->SysLog(IVRMOD, "THandleThread::Execute", "Package", "Error","Got a Exception when Receive Data from buffer");}//pLog->SysLog(IVRMOD, "THandleThread::Execute", "Orack", "Correct",//szBody, strlen(szBody));}bool THandleThread :: IsDigits( const char *src, unsigned int nLen){ unsigned int i;for (i = ; i < nLen; i++){if ((src[i] >= '') && (src[] <= ''))continue;elsereturn false;}return true;}int THandleThread :: DispatchTask(){int nRes,nLen;bool bBack = true;char szTmp[];TTaskHandler *pHandler = NULL;switch (nCmd){ pHandler = (TTaskHandler *)new TQuerySystem();bBack = false;break;case : //pHandler = (TTaskHandler *)new TQueryUser();break;case :pHandler = (TTaskHandler *)new TQueryAcount();break;case :pHandler = (TTaskHandler *)new TQueryAward();break;case :pHandler = (TTaskHandler *)new TQueryFee();break;case :pHandler = (TTaskHandler *)new TQueryAwardBulletin();break;case :pHandler = (TTaskHandler *)new TQueryInvestInfo();break;case :pHandler = (TTaskHandler *)new TQueryWinPrize();break;case :pHandler = (TTaskHandler *)new TQueryHotNum();break;case :pHandler = InvestHandle( szBody );break;case :pHandler = (TTaskHandler *)new TInvestc();break;/*case :pHandler = (TTaskHandler *)new TInvestc();break;*/case :pHandler = (TTaskHandler *)new TInvestc();break;/*case :pHandler = (TTaskHandler *)new TInvestBall();break;*/case :pHandler = (TTaskHandler *)new TInvestD();break;case :pHandler = (TTaskHandler *)new TInvestD();break;case :pHandler = (TTaskHandler *)new TFeeToMoney();break;case :pHandler = (TTaskHandler *)new TBonusToMoney();break;case :pHandler = (TTaskHandler *)new TBonusToFee();break;case :pHandler = (TTaskHandler *)new TBonusToHall();break;case :// pHandler = (TTaskHandler *)new TCardToMoney();// break;pHandler = (TTaskHandler *)new TBonusToBank();break;case :pHandler = (TTaskHandler *)new TCustomizeHandler();break;case :pHandler = (TTaskHandler *)new TCustomIssueBull();break;case :pHandler = (TTaskHandler *)new TCustomComment();break;case :pHandler = (TTaskHandler *)new TCustomRecommend();break;case :pHandler = (TTaskHandler *)new TCustomReview();break;case :pHandler = (TTaskHandler *)new TCustomRemind();break;case :pHandler = (TTaskHandler *)new TCustomAutoInvest();break;case :pHandler = (TTaskHandler *)new TCustomHotNum();break;case :pHandler = (TRegisteMan *)new TRegisteMan();break;case :pHandler = (TUnRegInvest *)new TUnRegInvest();break;case :pHandler = (TInvestBack *) new TInvestBack();break;default:DeleteTail(szBody, , '|');nLen = strlen(szBody);sprintf(szBody+nLen, "|");nLen = strlen(szBody) - ;sprintf(szTmp,"%d", nLen);ChangeWord(szBody, szTmp, ,'|');pHandler = NULL;sprintf(szTmp, "Command : %d", nCmd);pLog->WriteDbgLog(,IVRMOD,"THandleThread::DispatchTask","Error",szTmp,strlen(szTmp));}if (pHandler != NULL)nRes = pHandler->Run(szBody);else{nBodyLen = strlen(szBody);pLog->SrvLog(IVRMOD, "THandleThread::DispatchTask", "Inval Command", IntToStr(nSerial).c_str(),"","","Error","","",IntToStr(nCmd).c_str(),szBody,nBodyLen);nRes = ;}if ( bBack )Form->SendBuf(szBody, strlen(szBody));if (nRes == )Form->ShowMemoSys(,,IntToStr(nCmd),);if (pHandler != NULL){delete pHandler;}return nRes;}//TTaskHandler *THandleThread :: InvestHandle(char *pBuf){int nPlay;TTaskHandler *pHandler;char szTmp[];GetWord(pBuf, szTmp, , '|');nPlay = atoi( szTmp );if (nPlay == )return NULL;switch( nPlay ){case :pHandler = (TTaskHandler *)new TInvestD();break;case :pHandler = (TTaskHandler *)new TInvestSoccer();pHandler->nDime = ;break;case :pHandler = (TTaskHandler *)new TInvestSoccer();pHandler->nDime = ;break;case :pHandler = (TTaskHandler *)new TInvestD();pHandler->nDime = ;break;case :pHandler = (TTaskHandler *)new TInvestD();pHandler->nDime = ;break;case :pHandler = (TTaskHandler *)new TInvestD();pHandler->nDime = ;break;case :pHandler = (TTaskHandler *)new TInvestc();break;case :pHandler = (TTaskHandler *)new TInvestc();break;case :pHandler = (TTaskHandler *)new TLuckySoccer();break;default:pHandler = NULL;break;}return pHandler;}// TaskHandle.h////#ifndef TaskHandleH#define TaskHandleH#include <SysUtils.hpp>#include "IACTSVC.h"#include "ISMSSVC.h"//class TTaskHandler{public:virtual fastcall ~TTaskHandler(){};virtual int fastcall Run(char *pBuf){return ;}virtual int fastcall GetErrorCode(AnsiString RetCode, int &nErrCode);virtual int fastcall GetUserHead(const char *pBuf,int nCmd);//virtual int fastcall ParsePack(char *pPack, unsigned int nPackLen)= ;int m_nErrCode;char m_szIVRSerial[];TACTUser *pUserInfo;TACTHead *pHeadInfo;int nDime;};//-//enum {SelfSingel=, RandomSingle=, Multle=, Mixture=};class TInvestHandler : public TTaskHandler{//virtual int fastcall GenerateNum(int nCount, char *pNum){return ;}//virtual int fastcall CheckNum(int nType, char *pNum, int &nCount){return ;} protected:fastcall TInvestHandler(){};virtual fastcall ~TInvestHandler(){};//virtual int fastcall Factorial(int nNum);//virtual int fastcall Permutation(int nUpNum, int nDownNum); /virtual int fastcall Combination(int nUpNum, int nDownNum);virtual int fastcall ParsePack(char *pPack, unsigned int nPackLen){return ;}virtual int CheckMultiNum(char *pNum, unsigned int nMin,unsigned int nMax,unsigned int nHigh, int &nCount);virtual int CheckSingleNum(char *pNum, unsigned int nMin, unsigned int nMax);virtual int CheckMixtureNum(char *pNum, unsigned int nMin,unsigned int nMax, unsigned int nHigh, int &nCount);virtual int CheckMixtureNumD(char *pNum, unsigned int nMin,unsigned int nMax, unsigned int nHigh, int &nCount,int Times);int CheckSingleDNum(char *pNum, unsigned int nDime);int CheckMultiSingleDNum(char *pNum, unsigned int nMin, unsigned int nMax);virtual int SortedNumber(char *pNum);TACTInvestInfo *pInvestInfo;int m_nMoney;AnsiString m_asIssue;int m_nPlay;int m_nSaleMode;int m_nInvestMode;public:_di_IACTSVC SOAPService;virtual int fastcall Run(char *pBuf){return ;}virtual int fastcall Invest(){return ;}class TQueryHandler : public TTaskHandler{virtual int Query(char *pBuf){return ;}protected://virtual int fastcall GetErrorCode(AnsiString RetCode, int &pErrCode);public://TACTUser *pUserInfo;//TACTHead *pHeadInfo;_di_IACTSVC SOAPService;fastcall TQueryHandler(){};virtual fastcall ~TQueryHandler(){};}class TMoneyTransHandler : public TTaskHandler{virtual int Transfer(char *pBuf){return ;}protected://virtual int fastcall GetUserHead(const char *pBuf, int nCom);//virtual int fastcall GetErrorCode(AnsiString RetCode, char *pErrCode); public://TACTUser *pUserInfo;//TACTHead *pHeadInfo;_di_IACTSVC SOAPService;fastcall TMoneyTransHandler(){};virtual fastcall ~TMoneyTransHandler(){};};//class TCustomizeHandler : public TTaskHandler{virtual int Customize(char *pBuf);AnsiString m_asServ;int m_nRegType;int m_nSendLimit;public:TSMSUser *pSMUserInfo;TSMSHead *pSMHeadInfo;_di_ISMSSVC SOAPService;fastcall TCustomizeHandler();virtual fastcall ~TCustomizeHandler();virtual int fastcall GetUserHead(const char *pBuf,int nCmd);virtual int fastcall Run(char *pBuf);};class TRegisteHandler : public TTaskHandler{virtual int Registe(char *pBuf){return ;}public://TACTUser *pUserInfo;//TACTHead *pHeadInfo;_di_IACTSVC SOAPService;fastcall TRegisteHandler(){};virtual fastcall ~TRegisteHandler(){};};class TQueryAwardBulletin : TQueryHandler{virtual int Query(char *pBuf);AnsiString m_asPlay;AnsiString m_asIssue;int m_nBulletin;int m_nRespType;public:TSMSUser *pSMUserInfo;TSMSHead *pSMHeadInfo;_di_ISMSSVC SOAPService;fastcall TQueryAwardBulletin();virtual fastcall ~TQueryAwardBulletin();int fastcall GetUserHead(const char *pBuf,int nCmd);virtual int fastcall GetErrorCode(AnsiString RetCode, int &nErrCode);virtual int fastcall Run(char *pBuf);};clase TInsertSMS{TSMSUser *pSMUserInfo;TSMSHead *pSMHeadInfo;_di_ISMSSVC SOAPService;public:fastcall TInsertSMS();virtual fastcall ~TInsertSMS();int fastcall Run();*/#endif// // TaskHandle.cpp#pragma hdrstop#include <list.h>#include "TaskHandle.h"#include "DataModule.h"#include "LogInvoker.h"#include "IniInvoker.h"#include "SystemListener.h"#include "LotteryUtils.h"int fastcall TTaskHandler :: GetErrorCode(AnsiString RetCode, int &nErrCode) {if (RetCode.SubString(,) == ""){nErrCode = ;return ;}TOraStoredProc *pStoreProc = new TOraStoredProc(NULL);int nRes = ;if (!DataLib->CheckDB()){nErrCode = ;delete pStoreProc;return ;}pStoreProc->Active = false;pStoreProc->Session = DataLib->Oracle;pStoreProc->StoredProcName = "Pr_Query_RetCode";pStoreProc->Params->Clear();pStoreProc->Params->Add();pStoreProc->Params->Items[]->Name = "iTelNum";pStoreProc->Params->Items[]->DataType = ftString;pStoreProc->Params->Items[]->ParamType = ptInput;pStoreProc->Params->Items[]->AsString = pUserInfo->Phone;pStoreProc->Params->Add();pStoreProc->Params->Items[]->Name = "iErrCode";pStoreProc->Params->Items[]->DataType = ftString;pStoreProc->Params->Items[]->ParamType = ptInput;pStoreProc->Params->Items[]->AsString = RetCode;pStoreProc->Params->Add();pStoreProc->Params->Items[]->Name = "iCmd";pStoreProc->Params->Items[]->DataType = ftInteger;pStoreProc->Params->Items[]->ParamType = ptInput;pStoreProc->Params->Items[]->AsInteger = pHeadInfo->Cmd;pStoreProc->Params->Add();pStoreProc->Params->Items[]->Name = "iSerial";pStoreProc->Params->Items[]->DataType = ftString;pStoreProc->Params->Items[]->ParamType = ptInput;pStoreProc->Params->Items[]->AsString = pHeadInfo->;pStoreProc->Params->Add();pStoreProc->Params->Items[]->Name = "oResult";pStoreProc->Params->Items[]->DataType = ftString;pStoreProc->Params->Items[]->ParamType = ptOutput;pStoreProc->Params->Add();pStoreProc->Params->Items[]->Name = "oIvrCode";pStoreProc->Params->Items[]->DataType = ftInteger;pStoreProc->Params->Items[]->ParamType = ptOutput;pStoreProc->Params->Add();pStoreProc->Params->Items[]->Name = "oV oice";pStoreProc->Params->Items[]->DataType = ftString;pStoreProc->Params->Items[]->ParamType = ptOutput;try{pStoreProc->ExecProc();AnsiString asTmp = pStoreProc->Params->Items[]->AsString;if (asTmp == ""){nErrCode = pStoreProc->Params->Items[]->AsInteger;nRes = ;}}catch(...){nRes = ;pLog->SysLog(IVRMOD,"TQueryHandler::GetErrorCode", "DataBase","Error", "Oracle Exception Occurs When Exec Stored Proc");} if (pStoreProc != NULL)delete pStoreProc;} if (nRes == ){ nErrCode = ;} return nRes;int fastcall TTaskHandler :: GetUserHead(const char *pBuf,int nCmd){char szTel[];char szArea[];GetWord(pBuf, m_szIVRSerial, , '|');GetWord(pBuf, szTel, , '|');GetWord(pBuf, szArea, , '|');pHeadInfo->Cmd = nCmd;pHeadInfo->Source = IVR;pHeadInfo-> = TSystemState::Instance()->Get();pUserInfo->Area = szArea;pHeadInfo->Vender = VENDER;pUserInfo->Phone = szTel;return ;int fastcall TInvestHandler :: Combination(int nUpNum, int nDownNum) //组合{int nRes = ;int j = ;if (nDownNum < nUpNum)return ;for (int i = nDownNum-nUpNum+; i <= nDownNum; i++){nRes = nRes * i / (j++);}return nRes;}//-int TInvestHandler :: CheckSingleNum(char *pNum, unsigned int nMin, unsigned int nMax) {std::list<int> NumSerial;list<int>::iterator pos;NumSerial.clear();unsigned int i, num, nLen = strlen(pNum);if ((nLen%) == )return ;nLen = nLen / ;char szDigits[];memset(szDigits, '\', sizeof(szDigits));if (nLen != nMin)return ;for (i=; i<nLen; i++){memcpy(szDigits, pNum+(i*), );num = atoi(szDigits);if (num <= )return ;if (num <= nMax)NumSerial.push_back(num);elsereturn ;}NumSerial.sort();NumSerial.unique();if (NumSerial.size() != nLen)return ;i = ;for (pos=NumSerial.begin(); pos != NumSerial.end(); pos++){sprintf(pNum+(i++)*, "%d", *pos);}sprintf(pNum+nLen*,"^");return ;}int TInvestHandler :: CheckSingleDNum(char *pNum, unsigned int nDime) //CheckSingleDNum(pNum, ){std::list<int> NumSerial;list<int>::iterator pos;NumSerial.clear();unsigned int i, num, nLen = strlen(pNum);if (nLen != nDime)return ;for (i=; i<nLen; i++){num = pNum[i] - '';// if (num <= )if (num < )return ;if (num <= )NumSerial.push_back(num);elsereturn ;}NumSerial.sort();//NumSerial.unique();if (NumSerial.size() != nLen)return ;i = ;for (pos=NumSerial.begin(); pos != NumSerial.end(); pos++){sprintf(pNum + i, "%d*", *pos);i = strlen( pNum );}nLen = i - ;sprintf(pNum+nLen,"^");return ;}//int TInvestHandler :: CheckMultiNum(char *pNum, unsigned int nMin,unsigned int nMax, unsigned int nHigh, int &nCount){std::list<int> NumSerial;。