//--------------------------------------------------------------------------- void __fastcall TTcpSrvForm::ProcessData(TTcpSrvClient *Client) { int I; TTcpSrvClient *AClient; // We could replace all those CompareText with a table lookup if (CompareText(Client->RcvdLine, "exit") == 0) // We can't call Client.Close here because we will immediately // reenter DataAvailable event handler with same line because // a line is removed from buffer AFTER it has been processed. // Using CloseDelayed will delay Close until we are out of // current event handler. Client->CloseDelayed(); else if (CompareText(Client->RcvdLine, "time") == 0) // Send server date and time to client Client->SendStr(DateTimeToStr(Now()) + "\r\n"); else if (CompareText(Client->RcvdLine, "who") == 0) { // Send client list to client Client->SendStr("There are " + IntToStr(WSocketServer1->ClientCount) + " connected users:\r\n"); for (I = WSocketServer1->ClientCount - 1; I >= 0; I--) { AClient = (TTcpSrvClient *)(WSocketServer1->Client[I]); Client->SendStr(AClient->PeerAddr + ":" + AClient->PeerPort + " " + DateTimeToStr(AClient->ConnectTime) + "\r\n"); } } else if (CompareText(Client->RcvdLine, "exception") == 0) // This will trigger a background exception for client PostMessage(Client->Handle, WM_TRIGGER_EXCEPTION, 0, 0); else Client->SendStr("Unknown command: '" + Client->RcvdLine + "'\r\n"); }
//--------------------------------------------------------------------------- void __fastcall TFM_DATEPICKER::Calendar1DateSelected(TObject *Sender) { MainMenuForm->strPickupDate = DateTimeToStr(Calendar1->Date); MainMenuForm->strDateOut = DateTimeToStr(Calendar1->Date); this->Close(); }
bool AuthClientUser::SendLogMessage(AnsiString msg) { String warnMsg = FormatStr("%s(%s) : %s", m_UserName, m_ClientIP, String(msg)); GetLog()->Warn(warnMsg); GetThreadManager()->AddGUIMessage(warnMsg); AnsiString sendMsg = msg; sendMsg.Unique(); if(!this->SocketSendBYTE(PT_MSG)) return false; if(!this->SocketSendWORD(sendMsg.Length())) return false; if(!this->SocketSendBuff(sendMsg.c_str(), sendMsg.Length())) return false; if(m_ADOQuery) { m_ADOQuery->SQL->Text = FormatStr("INSERT user_error_msg (accid, cur_time, build, ip, msg) VALUES ('%s', '%s', %d, '%s', '%s')", m_UserName, DateTimeToStr(Now()), m_Build, m_ClientIP, String(msg)); ExecSQL(m_ADOQuery); } // Sleep(1000); return true; }
int initList(char *name) { try { createdL68 = false; listFile = fopen(name, "w"); if (!listFile) { sprintf(buffer,"Unable to create listing file"); Application->MessageBox(buffer, "Error", MB_OK); return MILD_ERROR; } // TDateTime DateTime = Time(); // store the current date and time AnsiString timeStr = DateTimeToStr(Now()); // date & time to a string // reserve room for starting address fprintf(listFile, "00000000 Starting Address\n"); fprintf(listFile, "Assembler used: %s\n", TITLE); fprintf(listFile, "Created On: %s\n\n", timeStr.c_str()); createdL68 = true; return NORMAL; } catch( ... ) { sprintf(buffer, "ERROR: An exception occurred in routine 'initList'. \n"); printError(NULL, EXCEPTION, 0); return MILD_ERROR; } }
//--------------------------------------------------------------------------- void TFormPici::GenOriginalRecordFile(void) { extern char *xlsHead; extern String g_curPiciFile,g_piciProductDesc,g_piciNumber,g_piciOperator,g_piciProductLine,g_piciProductCode,g_piciCheckweigher,g_piciProductName; extern TDateTime piciStartTime,piciOverTime; if(FileExists(g_curPiciFile)) { int fileAttr= FileGetAttr(g_curPiciFile); if((fileAttr & faReadOnly)!=0)FileSetAttr(g_curPiciFile,fileAttr&~faReadOnly); } FILE *f=fopen(g_curPiciFile.c_str(),"wb"); if(!f)return; fprintf(f,"%s\r\n",xlsHead); fprintf(f,"<center><strong><font size=4>%03d原始记录</font></strong></center>",g_CurPiciProductID); fprintf(f,"<table width=640 border=1>\r\n"); fprintf(f,"<tr align=left><td>产品编号:</td><td colspan=2>%s</td></tr>",g_piciProductCode.c_str()); fprintf(f,"<tr align=left><td>产品名称:</td><td colspan=2>%s</td></tr>",g_piciProductName.c_str()); fprintf(f,"<tr align=left><td>产品描述:</td><td colspan=2>%s</td></tr>",g_piciProductDesc.c_str()); fprintf(f,"<tr align=left><td>生产线号:</td><td colspan=2>%s</td></tr>",g_piciProductLine.c_str()); fprintf(f,"<tr align=left><td>检重秤号:</td><td colspan=2>%s</td></tr>",g_piciCheckweigher.c_str()); fprintf(f,"<tr align=left><td>批次号:</td><td colspan=2>%s</td></tr>",g_piciNumber.c_str()); fprintf(f,"<tr align=left><td>操作员:</td><td colspan=2>%s</td></tr>",g_piciOperator.c_str()); #if 0 fprintf(f,"<tr align=left><td>件数:</td><td colspan=2>%d</td></tr>",g_PiciCounter); #else if(g_PiciCapacity==DefaultPiciCapacity) { fprintf(f,"<tr align=left><td>件数:</td><td colspan=2></td></tr>"); } else { fprintf(f,"<tr align=left><td>件数:</td><td colspan=2>%d</td></tr>",g_PiciCapacity); } #endif fprintf(f,"<tr align=left><td>批次开始时间:</td><td colspan=2>%s</td></tr>",DateTimeToStr(piciStartTime).c_str()); fprintf(f,"<tr align=left><td>批次结束时间:</td><td colspan=2>%s</td></tr>",DateTimeToStr(piciOverTime).c_str()); if(g_PiciCounter>0) { fprintf(f,"<tr><td colspan=3></td></tr>"); fprintf(f,"<tr bgcolor=#DFDFDF align=center><td>序号</td><td>称重值</td><td>时间</td></tr>\r\n"); for(int i=0;i<g_PiciCounter;i++) { fprintf(f,"<tr align=center><td>%03d</td><td>%3.03f%s</td><td>%s</td></tr>\r\n",i+1,weight_values[i],strDefaultUnit.c_str(),DateTimeToStr(weight_times[i]).c_str()); } } fprintf(f,"</table></body></html>"); fclose(f); FileSetAttr(g_curPiciFile, faReadOnly); }
void __fastcall TCZYJSQFrm::PreviewBTNClick(TObject *Sender) { String temppath = GlobalPath; temppath += "\\PreviewFR3\\CZYJSMXPreview.fr3"; frxJSReport->LoadFromFile(temppath.t_str(), true); ((TfrxMemoView*)frxJSReport->FindObject("HeadM"))->Text = QCZYstr+"操作员收支情况结算"; ((TfrxMemoView*)frxJSReport->FindObject("BBCZYM"))->Text = OperatorName.t_str(); ((TfrxMemoView*)frxJSReport->FindObject("SCRQM"))->Text = DateTimeToStr(Now()).t_str(); ((TfrxMemoView*)frxJSReport->FindObject("QSRQM"))->Text = QSSJstr.t_str(); ((TfrxMemoView*)frxJSReport->FindObject("JZRQM"))->Text = JZSJstr.t_str(); ((TfrxMemoView*)frxJSReport->FindObject("KCSM"))->Text = KZCSstr+"人次"; ((TfrxMemoView*)frxJSReport->FindObject("KCBM"))->Text = "¥"+KCBstr; ((TfrxMemoView*)frxJSReport->FindObject("KZEM"))->Text = "¥"+KZEstr; ((TfrxMemoView*)frxJSReport->FindObject("ACSM"))->Text = AZCSstr+"人次"; ((TfrxMemoView*)frxJSReport->FindObject("ACBM"))->Text = "¥"+ACBstr; ((TfrxMemoView*)frxJSReport->FindObject("AZEM"))->Text = "¥"+AZEstr; ((TfrxMemoView*)frxJSReport->FindObject("ICSM"))->Text = IZCSstr+"人次"; ((TfrxMemoView*)frxJSReport->FindObject("ICBM"))->Text = "¥"+ICBstr; ((TfrxMemoView*)frxJSReport->FindObject("IZEM"))->Text = "¥"+IZEstr; ((TfrxMemoView*)frxJSReport->FindObject("GCSM"))->Text = GZCSstr+"人次"; ((TfrxMemoView*)frxJSReport->FindObject("GCBM"))->Text = "¥"+GCBstr; ((TfrxMemoView*)frxJSReport->FindObject("GZEM"))->Text = "¥"+GZEstr; ((TfrxMemoView*)frxJSReport->FindObject("DCSM"))->Text = DZCSstr+"人次"; ((TfrxMemoView*)frxJSReport->FindObject("DCBM"))->Text = "¥"+DCBstr; ((TfrxMemoView*)frxJSReport->FindObject("DZEM"))->Text = "¥"+DZEstr; ((TfrxMemoView*)frxJSReport->FindObject("CCSM"))->Text = CZCSstr+"人次"; ((TfrxMemoView*)frxJSReport->FindObject("CCBM"))->Text = "¥"+CCBstr; ((TfrxMemoView*)frxJSReport->FindObject("CZEM"))->Text = "¥"+CZEstr; ((TfrxMemoView*)frxJSReport->FindObject("TCSM"))->Text = TZCSstr+"人次"; ((TfrxMemoView*)frxJSReport->FindObject("TCBM"))->Text = "¥"+TCBstr; ((TfrxMemoView*)frxJSReport->FindObject("TZEM"))->Text = "¥"+TZEstr; ((TfrxMemoView*)frxJSReport->FindObject("QCSM"))->Text = QZCSstr+"人次"; ((TfrxMemoView*)frxJSReport->FindObject("QCBM"))->Text = "¥"+QCBstr; ((TfrxMemoView*)frxJSReport->FindObject("QZEM"))->Text = "¥"+QZEstr; ((TfrxMemoView*)frxJSReport->FindObject("JSCSM"))->Text = JSZCSstr+"人次"; ((TfrxMemoView*)frxJSReport->FindObject("JSCBM"))->Text = "¥"+JSZCBstr; ((TfrxMemoView*)frxJSReport->FindObject("JSZEM"))->Text = "¥"+JSZJEstr; ((TfrxMemoView*)frxJSReport->FindObject("ZCXJM"))->Text = "¥"+ZCZJEstr; ((TfrxMemoView*)frxJSReport->FindObject("SRXJM"))->Text = "¥"+SRZJEstr; ((TfrxMemoView*)frxJSReport->FindObject("JSM"))->Text = "¥"+ZJSstr; frxJSReport->ShowReport(true); }
//--------------------------------------------------------------------------- void __fastcall TCZMXShowFrm::PreviewBTNClick(TObject *Sender) { String temppath = GlobalPath; temppath += "\\PreviewFR3\\CZMXPreview.fr3"; frxCZMXReport->LoadFromFile(temppath.t_str(), true); // ((TfrxMemoView*)AllInfofrxReport->FindObject("FKCS"))->Text; ((TfrxMemoView*)frxCZMXReport->FindObject("KHMemo"))->Text = KHStr.t_str(); ((TfrxMemoView*)frxCZMXReport->FindObject("BHMemo"))->Text = BHStr.t_str(); ((TfrxMemoView*)frxCZMXReport->FindObject("BMMemo"))->Text = BMStr.t_str(); ((TfrxMemoView*)frxCZMXReport->FindObject("BBMemo"))->Text = BBStr.t_str(); ((TfrxMemoView*)frxCZMXReport->FindObject("ZBMemo"))->Text = ZBStr.t_str(); if(DKQCZTag) ((TfrxMemoView*)frxCZMXReport->FindObject("DKQCZMemo"))->Text = "Y"; else ((TfrxMemoView*)frxCZMXReport->FindObject("DKQCZMemo"))->Text = "N"; if(POSCZTag) ((TfrxMemoView*)frxCZMXReport->FindObject("POSJCZMemo"))->Text = "Y"; else ((TfrxMemoView*)frxCZMXReport->FindObject("POSJCZMemo"))->Text = "N"; if(FKCZTag) ((TfrxMemoView*)frxCZMXReport->FindObject("FKCZMemo"))->Text = "Y"; else ((TfrxMemoView*)frxCZMXReport->FindObject("FKCZMemo"))->Text = "N"; ((TfrxMemoView*)frxCZMXReport->FindObject("BBCZYMemo"))->Text = CZYStr.t_str(); ((TfrxMemoView*)frxCZMXReport->FindObject("CZCZYMemo"))->Text = CZCZYStr.t_str(); ((TfrxMemoView*)frxCZMXReport->FindObject("CZZEMemo"))->Text = "¥" + AllCKTextEdit->Text; ((TfrxMemoView*)frxCZMXReport->FindObject("QSRQMemo"))->Text = BeginDateTimeStr.t_str(); ((TfrxMemoView*)frxCZMXReport->FindObject("JZRQMemo"))->Text = EndDateTimeStr.t_str(); ((TfrxMemoView*)frxCZMXReport->FindObject("SCRQMemo"))->Text = DateTimeToStr(Now()).t_str(); ((TfrxMemoView*)frxCZMXReport->FindObject("BH"))->DataField = "bh"; ((TfrxMemoView*)frxCZMXReport->FindObject("KH"))->DataField = "kh"; ((TfrxMemoView*)frxCZMXReport->FindObject("XM"))->DataField = "NAME"; ((TfrxMemoView*)frxCZMXReport->FindObject("BM"))->DataField = "BUMEN"; ((TfrxMemoView*)frxCZMXReport->FindObject("BB"))->DataField = "BANBIE"; ((TfrxMemoView*)frxCZMXReport->FindObject("ZB"))->DataField = "ZUBIE"; ((TfrxMemoView*)frxCZMXReport->FindObject("CKJE"))->DataField = "ckje"; ((TfrxMemoView*)frxCZMXReport->FindObject("SFYE"))->DataField = "sf_ye"; ((TfrxMemoView*)frxCZMXReport->FindObject("SFLX"))->DataField = "sflx"; ((TfrxMemoView*)frxCZMXReport->FindObject("JYNO"))->DataField = "jyno"; ((TfrxMemoView*)frxCZMXReport->FindObject("CZY"))->DataField = "CZY"; ((TfrxMemoView*)frxCZMXReport->FindObject("PKEY"))->DataField = "pkey"; ((TfrxMemoView*)frxCZMXReport->FindObject("SFSJ"))->DataField = "sfrq"; frxCZMXReport->ShowReport(true); }
//--------------------------------------------------------------------------- void __fastcall TForm1::AbCabBrowser1Load(TObject *Sender) { Memo1->Clear(); Memo1->Lines->Add(AbCabBrowser1->FileName); Memo1->Lines->Add("----------------------------------------------"); String s = " Size: \t \t "; Memo1->Lines->Add(s + IntToStr(AbCabBrowser1->CabSize)); s = " Folders: \t \t "; Memo1->Lines->Add(s + IntToStr(AbCabBrowser1->FolderCount)); s = " Files: \t \t "; Memo1->Lines->Add(s + IntToStr(AbCabBrowser1->Count)); s = " SetID: \t \t "; Memo1->Lines->Add(s + IntToStr(AbCabBrowser1->SetID)); s = " Cab #: \t \t "; Memo1->Lines->Add(s + IntToStr(AbCabBrowser1->CurrentCab)); s = " hasPrev: \t "; if (AbCabBrowser1->HasPrev) s = s + "Yes"; else s = s + "No"; Memo1->Lines->Add(s); s = " hasNext: \t "; if (AbCabBrowser1->HasNext) s = s + "Yes"; else s = s + "No"; Memo1->Lines->Add(s); Memo1->Lines->Add(" "); if (AbCabBrowser1->Count > 0) { s = "Files: \t \t Size \t Timestamp \t Attributes \t Partial File"; Memo1->Lines->Add(s); s = "------------------------------------------------------------------"; Memo1->Lines->Add(s); for (int i=0; i<AbCabBrowser1->Count; i++) { Longint LI = AbCabBrowser1->Items[i]->LastModFileDate; LI = LI << 16; LI = LI + AbCabBrowser1->Items[i]->LastModFileTime; TDateTime DT = FileDateToDateTime(LI); s = AbCabBrowser1->Items[i]->FileName + "\t" + IntToStr(AbCabBrowser1->Items[i]->UncompressedSize) + "\t" + DateTimeToStr(DT) + "\t" + IntToStr(AbCabBrowser1->Items[i]->ExternalFileAttributes) + "\t"; if (AbCabBrowser1->Items[i]->PartialFile) s = s + "Yes"; else s = s + "No"; Memo1->Lines->Add(s); } } }
bool GenerateCard(TADOQuery *query, String cardType, int cnt) { query->SQL->Clear(); for(int i=0; i<cnt; i++) { query->SQL->Clear(); query->SQL->Add(FormatStr("INSERT wow_card (card_no, card_type, is_card_send, create_time) VALUES ('%s', '%s', %d, '%s')", CreateCardNo(cardType), cardType, 0, DateTimeToStr(Now())) ); if(!ExecSQL(query)) { return false; } } return true; }
bool GetCard(TADOQuery *query, String cardType, String *outputCardNo, vector<String> *outputMsg) { query->SQL->Text = FormatStr("UPDATE top (1) wow_card SET is_card_send = 1 , send_time = '%s' output INSERTED.card_no, INSERTED.card_type WHERE card_type = '%s' and is_card_send = 0", DateTimeToStr(Now()), cardType); if(!OpenSQL(query)) { outputMsg->push_back(GBText("错误(8)")); return false; } if(!query->RecordCount) return false; query->First(); if(outputCardNo) { *outputCardNo = query->FieldByName("card_no")->AsString; } return true; }
//--------------------------------------------------------------------------- void __fastcall TMainForm::TimerTaskTimer(TObject *Sender){ StatusBar->Panels->operator [](0)->Text =DateTimeToStr(Now()); if (DateTimePicker->Checked){ //自动关机设置 TDateTime time =DateTimePicker->Time; if (TimeToStr(time) ==TimeToStr(Now())){ ShutDown(true); //关终端机 system("shutdown -s -t 30"); //30秒后关电脑,直接运行系统命令算了 } } echoLoopTimes ++; if (echoLoopTimes >20){ //每16秒变换一次错误提示 echoLoopTimes =0; ShowErrMessage(); indexErrMsg ++; } if (! dateFileBakup){ //备份文件的程序执行一次 dateFileBakup =true; controller->BackupDateFile(controller->config->BinFileDir); //bin文件 controller->BackupDateFile(controller->config->HexFileDir); //hex文件 } }
//---------- //日志操作 //---------- void TFComm::LogMsg(AnsiString msg) { FILE* fd; AnsiString wmsg; static bool reporterr = false; AnsiString filename = ExtractFilePath(Application->ExeName) + LOG_FILENAME; fd = fopen(filename.c_str(), "a+t"); if (fd == NULL){ if (!reporterr) { reporterr = true; AnsiString msg = "文件不存在:"; if (m_pfcTextMessage) m_pfcTextMessage(msg + LOG_FILENAME); } return; } wmsg = DateTimeToStr(Now()) + "[" + IntToStr(::GetTickCount()) + "] " + msg + "\n"; fwrite(wmsg.c_str(), sizeof(char), StrLen(wmsg.c_str()), fd); fclose(fd); }
//--------------------------------------------------------------------------- void __fastcall TCTQFrm::PreviewBTNClick(TObject *Sender) { String temppath = GlobalPath; temppath += "\\PreviewFR3\\CTTJPreview.fr3"; frxCTTJReport->LoadFromFile(temppath.t_str(), true); ((TfrxMemoView*)frxCTTJReport->FindObject("QSRQM"))->Text = (BeginDatestr+" 00:00:00").t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("JZRQM"))->Text = (EndDatestr+" 23:59:59").t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("CTM"))->Text = CTStr.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("BBCZYM"))->Text = OperatorName.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("SCRQM"))->Text = DateTimeToStr(Now()).t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("BFCSM"))->Text = cxTextEdit1->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("BFZEM"))->Text = cxTextEdit2->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("BFPJM"))->Text = cxTextEdit3->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("BFBZM"))->Text = cxTextEdit4->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("LHCSM"))->Text = cxTextEdit5->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("LHZEM"))->Text = cxTextEdit6->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("LHPJM"))->Text = cxTextEdit7->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("LHBZM"))->Text = cxTextEdit8->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("SRCSM"))->Text = cxTextEdit9->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("SRZEM"))->Text = cxTextEdit10->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("SRPJM"))->Text = cxTextEdit11->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("SRBZM"))->Text = cxTextEdit12->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("NTCSM"))->Text = cxTextEdit13->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("NTZEM"))->Text = cxTextEdit14->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("NTPJM"))->Text = cxTextEdit15->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("NTBZM"))->Text = cxTextEdit16->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("ZJCSM"))->Text = cxTextEdit17->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("ZJZEM"))->Text = cxTextEdit18->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("ZJPJM"))->Text = cxTextEdit19->Text.t_str(); ((TfrxMemoView*)frxCTTJReport->FindObject("ZJBZM"))->Text = cxTextEdit20->Text.t_str(); frxCTTJReport->ShowReport(true); }
void __fastcall TBTDownloadFrm::DownBTJPARAMBTNClick(TObject *Sender) { BTJPARAMADOQ->Close(); BTJPARAMADOQ->SQL->Clear(); BTJPARAMADOQ->SQL->Add("select * from BTJPARAM"); BTJPARAMADOQ->Open(); if(!BTJPARAMADOQ->IsEmpty()) { unsigned char CMD = 0x32; WORD nSendStr = 126; WORD status; unsigned char SendStr[200] = ""; SendStr[0] = UsingSecNUM; SendStr[1] = 0x00; //消费类型 SendStr[2] = DWPassword[0]; SendStr[3] = DWPassword[1]; SendStr[4] = 0x00; SendStr[5] = btPosNo; String PW = BTJPARAMADOQ->FieldByName("PASSWORD")->AsString; String Hmm = "0x" + PW.SubString(1, 2); String Lmm = "0x" + PW.SubString(3, 2); SendStr[6] = (unsigned char)StrToInt(Hmm); //操作密码 SendStr[7] = (unsigned char)StrToInt(Lmm); //操作密码 for (int i = 8; i <= 37; i++) { SendStr[i] = 0x00; //保留 } SendStr[38] = CARDPasswordEdition;//0x01; //密码版本 SendStr[39] = CARDPassword[0];//0x00; //MF卡密码??? SendStr[40] = CARDPassword[1];//0x00; //MF卡密码??? SendStr[41] = CARDPassword[2];//0x00; //MF卡密码??? SendStr[42] = CARDPassword[3];//0x00; //MF卡密码??? SendStr[43] = CARDPassword[4];//0x00; //MF卡密码??? SendStr[44] = CARDPassword[5];//0x00; //MF卡密码??? int tmpmax = BTJPARAMADOQ->FieldByName("MAXXF")->AsFloat*100; //最大消费 SendStr[45] = (unsigned char)((int)(tmpmax/65536)); SendStr[46] = (unsigned char)((int)((tmpmax%65536)/256)); SendStr[47] = (unsigned char)(tmpmax%256); SendStr[48] = 0x00; //固定消费金额 SendStr[49] = 0x00; //固定消费金额 SendStr[50] = 0x00; //固定消费金额 SendStr[51] = 0x00; //单位固定消费金额 SendStr[52] = 0x00; //单位固定消费金额 SendStr[53] = 0x00; //单位固定消费金额 int Max1 = maxconsumption*100; int Max2 = maxconsumption1*100; int Max3 = maxconsumption2*100; int Max4 = maxconsumption3*100; int Max5 = maxconsumption4*100; //每天最大消费begin SendStr[54] = (unsigned char)((int)(Max1/65536)); SendStr[55] = (unsigned char)((int)((Max1%65536)/256)); SendStr[56] = (unsigned char)(Max1%256); for (int i = 57; i <= 89; i++) { SendStr[i] = 0x00; } SendStr[90] = (unsigned char)((int)(Max2/65536)); SendStr[91] = (unsigned char)((int)((Max2%65536)/256)); SendStr[92] = (unsigned char)(Max2%256); SendStr[93] = (unsigned char)((int)(Max3/65536)); SendStr[94] = (unsigned char)((int)((Max3%65536)/256)); SendStr[95] = (unsigned char)(Max3%256); SendStr[96] = (unsigned char)((int)(Max4/65536)); SendStr[97] = (unsigned char)((int)((Max4%65536)/256)); SendStr[98] = (unsigned char)(Max4%256); SendStr[99] = (unsigned char)((int)(Max5/65536)); SendStr[100] = (unsigned char)((int)((Max5%65536)/256)); SendStr[101] = (unsigned char)(Max5%256); status = SerSendFunc((unsigned char)(BTJPARAMADOQ->FieldByName("SFJPORT")->AsInteger), WORD(BTJPARAMADOQ->FieldByName("JH")->AsInteger), CMD, SendStr, nSendStr, 1); if(0 == status) { CMD = 0x31; String datestr = DateTimeToStr(Now()); char* timepstr = datestr.t_str(); SendStr[0] = (unsigned char)(((int)timepstr[2]-48)*16+(int)timepstr[3]-48); SendStr[1] = (unsigned char)(((int)timepstr[5]-48)*16+(int)timepstr[6]-48); SendStr[2] = (unsigned char)(((int)timepstr[8]-48)*16+(int)timepstr[9]-48); if(19 == datestr.Length()) { SendStr[3] = (unsigned char)(((int)timepstr[11]-48)*16+(int)timepstr[12]-48); SendStr[4] = (unsigned char)(((int)timepstr[14]-48)*16+(int)timepstr[15]-48); SendStr[5] = (unsigned char)(((int)timepstr[17]-48)*16+(int)timepstr[18]-48); } else { SendStr[3] = (unsigned char)((int)timepstr[11]-48); SendStr[4] = (unsigned char)(((int)timepstr[13]-48)*16+(int)timepstr[14]-48); SendStr[5] = (unsigned char)(((int)timepstr[16]-48)*16+(int)timepstr[17]-48); } nSendStr = 8; status = SerSendFunc((unsigned char)(BTJPARAMADOQ->FieldByName("SFJPORT")->AsInteger), WORD(BTJPARAMADOQ->FieldByName("JH")->AsInteger), CMD, SendStr, nSendStr, 1); } else { MessageBox(this->Handle, "补贴机异常!", "Error", MB_OK|MB_ICONERROR); } } else MessageBox(this->Handle, "数据库没用补贴机信息!", "Error", MB_OK|MB_ICONERROR); BTJPARAMADOQ->Close(); }
//--------------------------------------------------------------------------- void __fastcall TCTQFrm::ExportBTNClick(TObject *Sender) { if(SaveDialog->Execute()) { ExportBTN->Enabled = false; PreviewBTN->Enabled = false; if(FileExists(SaveDialog->FileName+".xls")) { ExportBTN->Enabled = true; PreviewBTN->Enabled = true; throw(Exception("该目录下存在同名文件,请重新输入文件名!")); return; } else { String savename = SaveDialog->FileName; savename += ".xls"; Variant ExcelApp; try { ExcelApp = CreateOleObject("Excel.Application"); } catch(...) { MessageBox(this->Handle, "错误:您的系统中可能没有安装Excel!", "Error in launch Excel!", MB_OK|MB_ICONERROR); return; } String Templatepath = GlobalPath + "\\ExportXLSTemplate\\CTTJTemplate.xlt"; ExcelApp.OlePropertyGet("workbooks").OleFunction("Open", Templatepath.t_str()); Variant WB = ExcelApp.OlePropertyGet("ActiveWorkBook"); Variant ST = WB.OlePropertyGet("Sheets", 1); ST.OlePropertyGet("Cells",2,2).OlePropertySet("Value", (BeginDatestr+" 00:00:00").t_str()); ST.OlePropertyGet("Cells",2,7).OlePropertySet("Value", (EndDatestr+" 23:59:59").t_str()); ST.OlePropertyGet("Cells",3,2).OlePropertySet("Value", CTStr.t_str()); ST.OlePropertyGet("Cells",3,5).OlePropertySet("Value", OperatorName.t_str()); ST.OlePropertyGet("Cells",3,8).OlePropertySet("Value", DateTimeToStr(Now()).t_str()); ST.OlePropertyGet("Cells",6,2).OlePropertySet("Value", cxTextEdit1->Text.t_str()); ST.OlePropertyGet("Cells",7,2).OlePropertySet("Value", cxTextEdit2->Text.t_str()); ST.OlePropertyGet("Cells",8,2).OlePropertySet("Value", cxTextEdit3->Text.t_str()); ST.OlePropertyGet("Cells",9,2).OlePropertySet("Value", cxTextEdit4->Text.t_str()); ST.OlePropertyGet("Cells",6,4).OlePropertySet("Value", cxTextEdit5->Text.t_str()); ST.OlePropertyGet("Cells",7,4).OlePropertySet("Value", cxTextEdit6->Text.t_str()); ST.OlePropertyGet("Cells",8,4).OlePropertySet("Value", cxTextEdit7->Text.t_str()); ST.OlePropertyGet("Cells",9,4).OlePropertySet("Value", cxTextEdit8->Text.t_str()); ST.OlePropertyGet("Cells",6,6).OlePropertySet("Value", cxTextEdit9->Text.t_str()); ST.OlePropertyGet("Cells",7,6).OlePropertySet("Value", cxTextEdit10->Text.t_str()); ST.OlePropertyGet("Cells",8,6).OlePropertySet("Value", cxTextEdit11->Text.t_str()); ST.OlePropertyGet("Cells",9,6).OlePropertySet("Value", cxTextEdit12->Text.t_str()); ST.OlePropertyGet("Cells",6,8).OlePropertySet("Value", cxTextEdit13->Text.t_str()); ST.OlePropertyGet("Cells",7,8).OlePropertySet("Value", cxTextEdit14->Text.t_str()); ST.OlePropertyGet("Cells",8,8).OlePropertySet("Value", cxTextEdit15->Text.t_str()); ST.OlePropertyGet("Cells",9,8).OlePropertySet("Value", cxTextEdit16->Text.t_str()); ST.OlePropertyGet("Cells",6,10).OlePropertySet("Value", cxTextEdit17->Text.t_str()); ST.OlePropertyGet("Cells",7,10).OlePropertySet("Value", cxTextEdit18->Text.t_str()); ST.OlePropertyGet("Cells",8,10).OlePropertySet("Value", cxTextEdit19->Text.t_str()); ST.OlePropertyGet("Cells",9,10).OlePropertySet("Value", cxTextEdit20->Text.t_str()); ExcelApp.OlePropertyGet("Columns").OleFunction("AutoFit"); WB.OleFunction("SaveAs", savename.t_str()); ExcelApp.OleFunction("Quit"); ExcelApp = Unassigned; MessageBox(this->Handle, "数据已完成导出!", "Successfully!", MB_OK|MB_ICONINFORMATION); } ExportBTN->Enabled = true; PreviewBTN->Enabled = true; } }
//=========================================================================== // ヘッダ情報を生成する //=========================================================================== bool __fastcall TAttacheCaseFileEncrypt::CreateHeaderData (TMemoryStream *pms, TStringList *FileList, TStringList *FilePathList, __int64 &AllTotalFileSize) { int i, c; int ret; int Index = 0; int HeaderSizeAddress = 0; TSearchRec sr; String OneLine; String DirPath, FileName; String MsgText; //暗号部トークン const AnsiString Passcode_AttacheCase = "Passcode:AttacheCase\n"; //暗号化ファイルの作成日 AnsiString LastDateTimeString = "LastDateTime:" + DateTimeToStr(Now()) + "\n"; //旧ヘッダーテキストすべて AnsiString Fn_HeaderText; //Unicode用ヘッダーテキストすべて String U_HeaderText; int EncryptHeaderSize = 0; //暗号部ヘッダサイズ char buffer[BUF_SIZE]; char chain_buffer[BUF_SIZE]; TStringList *HeaderDataList; TMemoryStream* tpms; //テンポラリメモリストリーム //----------------------------------- // ヘッダ情報(平文) //----------------------------------- const char charReservedValue[4] = { 0, 0, 0, 0 }; const char charDataSubVersion = ATC_DATA_SUB_VERSION; const char charOptMissTypeLimitsNumOption = intOptMissTypeLimitsNumOption; const char charOptBrokenFileOption = (fOptBrokenFileOption > 0 ? 1 : 0); const char charTokenString[17] = "_AttacheCaseData"; const int DataFileVersion = ATC_DATA_FILE_VERSION; const int AlgorismType = TYPE_ALGORISM_RIJNDAEL; //データサブバージョン : 1byte pms->Write(&charDataSubVersion, sizeof(char)); //予約データ(reserved) : 1byte pms->Write(&charReservedValue, sizeof(char)); //ミスタイプ回数 : 1byte pms->Write(&charOptMissTypeLimitsNumOption, sizeof(char)); //破壊するか否か : 1byte pms->Write(&charOptBrokenFileOption, sizeof(char)); //トークン : 16byte pms->Write(&charTokenString, 16); //データファイルバージョン : 4byte pms->Write(&DataFileVersion, sizeof(int)); //アルゴリズムタイプ : 4byte pms->Write(&AlgorismType, sizeof(int)); //暗号化部分のヘッダデータサイズ(先に確保しておく):4byte HeaderSizeAddress = pms->Position; pms->Write(&EncryptHeaderSize, sizeof(int)); //----------------------------------- // ヘッダ情報(暗号化部分) //----------------------------------- //進捗状況表示 ProgressPercentNum = -1; //'暗号化するファイルリストの生成中...' ProgressStatusText = LoadResourceString(&Msgencrypt::_LABEL_STATUS_TITLE_LISTING); //ヘッダデータリスト(文字列) HeaderDataList = new TStringList; //パスワード HeaderDataList->Add(Passcode_AttacheCase); //作成日 HeaderDataList->Add(LastDateTimeString); for ( i = 0; i < FileList->Count; i++ ){ //ファイル if (FileExists(FileList->Strings[i]) == true) { DirPath = ExtractFileDir(FileList->Strings[i]); FileName = ExtractFileName(FileList->Strings[i]); ProgressMsgText = FileName; //処理中のファイル名 AllTotalFileSize += GetFileInfoList(Index, DirPath, FileName, FileList->Strings[i], FilePathList, HeaderDataList); } //ディレクトリ else{ DirPath = ExtractFileDir(FileList->Strings[i]); FileName = ExtractFileName(FileList->Strings[i]); ProgressMsgText = FileName; //処理中のファイル名 //トップディレクトリ GetFileInfoList(Index, DirPath, FileName, FileList->Strings[i], FilePathList, HeaderDataList); //その配下 AllTotalFileSize += GetFileInfoList(Index, FileList->Strings[i], "", FileList->Strings[i], FilePathList, HeaderDataList); } //ユーザーキャンセル if (Terminated == true) { delete HeaderDataList; return(false); } }// end for; //進捗状況表示 ProgressPercentNum = -1; //'ヘッダデータを書き込んでいます...' ProgressStatusText = LoadResourceString(&Msgencrypt::_LABEL_STATUS_TITLE_ENCRYPTING_LIST); ProgressMsgText = ""; //メモリストリームへ書き込み tpms = new TMemoryStream; //------------------------------------------------ // 暗号化時にヘッダデータの互換性維持 //--------------------------------------------------- HeaderDataList->SaveToStream(tpms, TEncoding::GetEncoding(932)); //新バージョン(ver.2.8.0~)用(UTF-8)に保存 for (i = 0; i < HeaderDataList->Count; i++) { HeaderDataList->Strings[i] = StringReplace(HeaderDataList->Strings[i],"Fn_","U_",TReplaceFlags()<<rfIgnoreCase ); } HeaderDataList->SaveToStream(tpms, TEncoding::UTF8); delete HeaderDataList; //----------------------------------- //ヘッダ情報の暗号化 //----------------------------------- //暗号化の準備 gentables(); //キー入力 gkey( 8, 8, key); for (i = 0; i < BUF_SIZE; i++) { buffer[i] = 0; } //初期化ベクトル(IV)を生成 fillrand(chain_buffer, BUF_SIZE); pms->Write(chain_buffer, BUF_SIZE); //先頭にポインタを戻す tpms->Seek((__int64)0, TSeekOrigin::soBeginning); EncryptHeaderSize = 0; //CBCモードで書き込む while (tpms->Read( buffer, BUF_SIZE ) != NULL){ EncryptHeaderSize += BUF_SIZE; // xor for ( i = 0; i < BUF_SIZE; i++ ){ buffer[i] ^= chain_buffer[i]; } // rijndael rijndael_encrypt(buffer); pms->Write(buffer, BUF_SIZE); //CBC&バッファの初期化 for ( i = 0; i < BUF_SIZE; i++ ){ chain_buffer[i] = buffer[i]; buffer[i] = 0; } //ユーザーキャンセル if (Terminated == true) { delete tpms; return(false); } }//loop; delete tpms; //暗号化部分のヘッダデータサイズ(確保しておいた場所へ改めて書き込む) pms->Position = HeaderSizeAddress; pms->Write(&EncryptHeaderSize, sizeof(int)); //先頭にポインタを戻す pms->Seek((__int64)0, TSeekOrigin::soBeginning); return(true); }//end CreateHeaderData;
//--------------------------------------------------------------------------- void __fastcall TCZMXExportThread::Execute() { //---- Place thread code here ---- ValidEXBTN->Enabled = false; ValidPreBTN->Enabled = false; ValidEBTN->Enabled = false; Variant ExcelApp; try { ExcelApp = CreateOleObject("Excel.Application"); } catch(...) { MessageBox(CZMXShowFrm->Handle, "错误:您的系统中可能没有安装Excel!", "Error in launch Excel!", MB_OK|MB_ICONERROR); ValidEXBTN->Enabled = true; ValidPreBTN->Enabled = true; ValidEBTN->Enabled = true; return; } ValidQuery->Open(); String DTX = ""; String path = GlobalPath; String Templatepath; ValidQuery->First(); int allrecord = ValidQuery->RecordCount; for(int i = 0; i <65531; i++) { DTX += ValidQuery->FieldByName("kh")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("bh")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("NAME")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("BUMEN")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("BANBIE")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("ZUBIE")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("ckje")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("sf_ye")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("sycs")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("sflx")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("jyno")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("CZY")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("pkey")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("sfrq")->AsAnsiString.Trim(); DTX += "\n"; Validprogress->Position = i*100/allrecord; ValidQuery->Next(); if(ValidQuery->Eof) break; } Templatepath = path + "\\ExportXLSTemplate\\CZMXTemplate.xlt"; ExcelApp.OlePropertyGet("workbooks").OleFunction("Open", Templatepath.t_str()); Variant WB = ExcelApp.OlePropertyGet("ActiveWorkBook"); Variant ST = WB.OlePropertyGet("Sheets", 1); //设置报头信息 String tmpoutstr = ""; ST.OlePropertyGet("Cells",2,2).OlePropertySet("Value", ValidKHstr.t_str()); ST.OlePropertyGet("Cells",2,4).OlePropertySet("Value", ValidBHstr.t_str()); ST.OlePropertyGet("Cells",2,6).OlePropertySet("Value", ValidBBstr.t_str()); ST.OlePropertyGet("Cells",2,8).OlePropertySet("Value", ValidCZCZYstr.t_str()); tmpoutstr = "¥" + ValidAllCKstr; ST.OlePropertyGet("Cells",2,10).OlePropertySet("Value", tmpoutstr.t_str()); ST.OlePropertyGet("Cells",2,12).OlePropertySet("Value", ValidCZYstr.t_str()); ST.OlePropertyGet("Cells",2,14).OlePropertySet("Value", ValidBeginDatestr.t_str()); ST.OlePropertyGet("Cells",3,2).OlePropertySet("Value", ValidBMstr.t_str()); if(ValidDKQCZtag) ST.OlePropertyGet("Cells",3,4).OlePropertySet("Value", "Y"); else ST.OlePropertyGet("Cells",3,4).OlePropertySet("Value", "N"); ST.OlePropertyGet("Cells",3,6).OlePropertySet("Value", ValidZBstr.t_str()); if(ValidPOSCZtag) ST.OlePropertyGet("Cells",3,8).OlePropertySet("Value", "Y"); else ST.OlePropertyGet("Cells",3,8).OlePropertySet("Value", "N"); if(ValidFKCZtag) ST.OlePropertyGet("Cells",3,10).OlePropertySet("Value", "Y"); else ST.OlePropertyGet("Cells",3,10).OlePropertySet("Value", "N"); ST.OlePropertyGet("Cells",3,12).OlePropertySet("Value", DateTimeToStr(Now()).t_str()); ST.OlePropertyGet("Cells",3,14).OlePropertySet("Value", ValidEndDatestr.t_str()); Variant RE = ST.OlePropertyGet("Range", "A7").OleFunction("Select"); Clipboard()->Clear(); Clipboard()->SetTextBuf(DTX.c_str()); ST.OleFunction("Paste"); Clipboard()->Clear(); ExcelApp.OlePropertyGet("Columns").OleFunction("AutoFit"); WB.OleFunction("SaveAs", Validsavepath.t_str()); ExcelApp.OleFunction("Quit"); ExcelApp = Unassigned; Validprogress->Position = 100; MessageBox(CZMXShowFrm->Handle, "数据已完成导出!", "Successfully!", MB_OK|MB_ICONINFORMATION); ValidEXBTN->Enabled = true; ValidPreBTN->Enabled = true; ValidEBTN->Enabled = true; }
//-------------------------------------------------------------------------- // prepare log files void __fastcall TLog::prepareLogFile() { AnsiString str; try { Form1->LoggingLbl->Visible = false; // hide logging label AnsiString timeStr = DateTimeToStr(Now()); // date & time to a string // Execution logging if (ElogFlag) // if execution log selected { ElogFile = fopen(ELogFileName->Text.c_str(), "r"); // does file exist if (ElogFile) { // if file exists fclose(ElogFile); // close log file LogfileDialog->setMessage("Execution Log File exists!"); switch(LogfileDialog->ShowModal()) // Replace, Append, Cancel? { case mrOk: ElogFile = fopen(ELogFileName->Text.c_str(), "wt"); // open log file break; case mrAll: ElogFile = fopen(ELogFileName->Text.c_str(), "at"); // append to log file break; default: stopLog(); return; } } else { // file does not exist ElogFile = fopen(ELogFileName->Text.c_str(), "wt"); // open log file } if (!ElogFile) { // if file error sprintf(buffer,"Can't open log file. Check log file name., Error number %d\n", ElogFile); Application->MessageBox(buffer, "Error", MB_OK); stopLog(); Log->Show(); // display log form return; } // label file fprintf(ElogFile, "EASy68K execution log file: %s\n\n", timeStr.c_str()); Form1->LoggingLbl->Visible = true; // display logging label Form1->ToolLogStart->Enabled = false; Form1->ToolLogStop->Enabled = true; Form1->LogStart->Enabled = false; Form1->LogStop->Enabled = true; if (ElogFlag == INST_REG_MEM) { // if logging memory str = "0x"; logMemAddr = StrToInt(str + MemFrom->EditText); // get address to log logMemAddr -= logMemAddr%16; // force to $10 boundary logMemBytes = StrToInt(str + MemBytes->EditText); // get byte count logMemBytes += 15; logMemBytes -= logMemBytes%16; // force to increment of $10 } } // Output logging if (OlogFlag) // if output log selected { OlogFile = fopen(OLogFileName->Text.c_str(), "r"); // does file exist if (OlogFile) { // if file exists fclose(OlogFile); // close log file LogfileDialog->setMessage("Output Log File exists!"); switch(LogfileDialog->ShowModal()) // Replace, Append, Cancel? { case mrOk: OlogFile = fopen(OLogFileName->Text.c_str(), "wb"); // open log file break; case mrAll: OlogFile = fopen(OLogFileName->Text.c_str(), "ab"); // append to log file break; default: stopLog(); return; } } else { // file does not exist OlogFile = fopen(OLogFileName->Text.c_str(), "wb"); // open log file } if (!OlogFile) { // if error sprintf(buffer,"Can't open log file, error %d\n", OlogFile); Application->MessageBox(buffer, "Error", MB_OK); stopLog(); return; } // label file fprintf(OlogFile, "EASy68K output log file: %s\r\n\r\n", timeStr.c_str()); Form1->LoggingLbl->Visible = true; // display logging label Form1->ToolLogStart->Enabled = false; Form1->ToolLogStop->Enabled = true; Form1->LogStart->Enabled = false; Form1->LogStop->Enabled = true; } Form1->SaveSettings(); Log->Close(); // close log window } catch( ... ) { sprintf(buffer, "ERROR 999: An exception occurred in routine 'TLog::OKBtnClick'. \n"); Application->MessageBox(buffer, "Error", MB_OK); } }
void __fastcall TDealMistakeForm::cxButton4Click(TObject *Sender) { if(cxDateEdit1->Text.IsEmpty()||cxTimeEdit1->Text.IsEmpty()||cxTimeEdit2->Text.IsEmpty()) { ShowMessage("必须完整的填写查询时间条件!"); return; } if(cxTimeEdit1->Time > cxTimeEdit2->Time) { ShowMessage("消费时间下限必须晚于消费时间上限!"); return; } if(cxTextEdit2->Text.IsEmpty()) { ShowMessage("必须输入消费机号!"); return; } String sqlstr = "select * from MX where KH="; String sqlbakstr = "select * from MXBAK where KH="; sqlstr += querykh; sqlbakstr += querykh; String upstr; String downstr; upstr = DateTimeToStr(cxDateEdit1->Text+" "+cxTimeEdit1->Text); downstr = DateTimeToStr(cxDateEdit1->Text+" "+cxTimeEdit2->Text); String addsqlstr = " and JYNO="; addsqlstr += cxTextEdit2->Text; addsqlstr += " and SFRQ>'"; addsqlstr += upstr; addsqlstr += "' and SFRQ<'"; addsqlstr += downstr; addsqlstr += "'"; sqlstr += addsqlstr; sqlbakstr += addsqlstr; ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(sqlstr); ADOQuery1->Open(); if(!ADOQuery1->IsEmpty()) { } else { ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(sqlbakstr); ADOQuery1->Open(); if(!ADOQuery1->IsEmpty()) { } else { ShowMessage("该卡号在这一时间段没有进行消费,不存在误收操作!"); return; } } }
void __fastcall TDealMistakeForm::cxButton3Click(TObject *Sender) { //修正金额 if(cxTextEdit1->Text.IsEmpty()) { ShowMessage("必须填写修正金额!"); return; } double mistakemoney = 0; try { mistakemoney = StrToFloat(cxTextEdit1->Text); } catch(...) { ShowMessage("您输入的修正金额为非正常值,请重新输入!"); cxTextEdit1->SelectAll(); return; } if(0 == mistakemoney) { ShowMessage("修正金额为0,错误的输入!"); return; } //修正金额写卡 //修正行为入库CARD,CARD_F,MX,Operatorlist,"^"为充钱,"v"为扣钱。 String Moutstr = "请您确认输入的修正金额为:¥"; Moutstr += mistakemoney; if(mrOk != MessageBox(this->Handle, Moutstr.t_str(), "确认修正金额", MB_OKCANCEL)) return; WORD status; WORD WriteStatus; int tmpbalance; int tmpkh,tmpsycs; double tmpintye; double tmpye; unsigned char keymode,secnum,Delayms,mode; unsigned char key[6]; unsigned char dwmm[6]; unsigned char daytime[4]; unsigned char kh[4]; unsigned char balance[4]; unsigned char cardtype[1]; unsigned char czmm[3]; unsigned char synum[3]; Delayms = DelaySecond;//0x00; keymode = CARDPasswordEdition; mode = 0x01; secnum = UsingSecNUM; key[0] = CARDPassword[0]; key[1] = CARDPassword[1]; key[2] = CARDPassword[2]; key[3] = CARDPassword[3]; key[4] = CARDPassword[4]; key[5] = CARDPassword[5]; if(LoadHModule) { if(readwatercardinfo)//readcardinfo) { // ShowMessage("begin read card!"); // status = readcardinfo(readcomno,keymode,secnum,key,kh,balance, // dwmm,synum,daytime,cardtype,czmm,Delayms); status = readwatercardinfo(readcomno,keymode,secnum,key,kh,balance, dwmm,daytime,cardtype,Delayms); if(status > 99) { ShowMessage("通讯错误!"); } else if (1 == status) { ShowMessage("请把卡片放好!"); } else if (2 == status) { ShowMessage("卡号大于192000或等于0!"); } else if (4 == status) { ShowMessage("卡片密码不对!"); } else if (5 == status) { ShowMessage("读写卡不稳定!"); } else if (6 == status) { ShowMessage("卡结构不对!"); } else if (10 == status) { ShowMessage("卡结构不对!"); } else if (0 != status) { ShowMessage("该卡未发行或已退卡!"); } else { tmpkh = (int)kh[1]*256*256+(int)kh[2]*256+(int)kh[3]; if(querykh != tmpkh) { ShowMessage("该卡不是刚才查询的卡片,无法修正!"); return; } tmpsycs = 0;//(int)synum[0]*256+(int)synum[1]; tmpsycs++; unsigned char writesynum[2]; writesynum[0] = (char)(tmpsycs/256); writesynum[1] = (char)(tmpsycs%256); tmpintye = (double)balance[1]*256*256+(double)balance[2]*256+(double)balance[3]; // tmpye = tmpintye/100+ReChargeMoney; tmpye = tmpintye/100 + mistakemoney; unsigned char writebalance[4]; double writetmpbalance = mistakemoney; writetmpbalance *= 100; writebalance[0] = 0x00; writebalance[1] = (unsigned char)((int)writetmpbalance/65536); writetmpbalance = (int)writetmpbalance%65536; writebalance[2] = (unsigned char)((int)writetmpbalance/256); writetmpbalance = (int)writetmpbalance%256; writebalance[3] = (unsigned char)writetmpbalance; if(LaunchWaterNewCard)//LaunchNewCard) { String DateofLaunchCard; SYSTEMTIME tmpsystime; GetLocalTime(&tmpsystime); DateofLaunchCard = DateTimeToStr(SystemTimeToDateTime(tmpsystime)); ADOTable1->TableName = "HJL"; ADOTable1->Active = true; if(mistakemoney>0) ADOTable1->InsertRecord(ARRAYOFCONST((bhstr,tmpkh,tmpye,mistakemoney,tmpsycs,"^",OperatorName,DateofLaunchCard))); else if(mistakemoney < 0) ADOTable1->InsertRecord(ARRAYOFCONST((bhstr,tmpkh,tmpye,mistakemoney,tmpsycs,"v",OperatorName,DateofLaunchCard))); /* String hjlsqlstr = "insert into HJL values(:BH,:KH,:YE,:JE,:SFLX,:CZY,:OPTIME)"; HJLADOQ->Close(); HJLADOQ->SQL->Clear(); HJLADOQ->SQL->Add(hjlsqlstr); HJLADOQ->Parameters->ParamByName("BH")->Value = cxTextEdit7->Text; HJLADOQ->Parameters->ParamByName("KH")->Value = tmpkh; HJLADOQ->Parameters->ParamByName("YE")->Value = tmpye; HJLADOQ->Parameters->ParamByName("JE")->Value = ReChargeMoney; HJLADOQ->Parameters->ParamByName("SFLX")->Value = "a"; HJLADOQ->Parameters->ParamByName("CZY")->Value = OperatorName; HJLADOQ->Parameters->ParamByName("OPTIME")->Value = DateofLaunchCard; HJLADOQ->ExecSQL(); */ //插入MX表 ADOQuery1->Close(); ADOQuery1->SQL->Clear(); String sqlstr = "insert into MX values(:BH,:KH,:SF_YE,"; sqlstr = sqlstr + ":SFJE,:SYCS,:SFRQ,:JYNO,"; sqlstr = sqlstr + ":GZZID,:SFLX,:CZY,:SCRQ)"; ADOQuery1->SQL->Add(sqlstr); ADOQuery1->Parameters->ParamByName("BH")->Value = bhstr; ADOQuery1->Parameters->ParamByName("KH")->Value = tmpkh; ADOQuery1->Parameters->ParamByName("SF_YE")->Value = tmpye; ADOQuery1->Parameters->ParamByName("SFJE")->Value = mistakemoney; ADOQuery1->Parameters->ParamByName("SYCS")->Value = tmpsycs; ADOQuery1->Parameters->ParamByName("SFRQ")->Value = DateofLaunchCard; ADOQuery1->Parameters->ParamByName("JYNO")->Value = 1002; ADOQuery1->Parameters->ParamByName("GZZID")->Value = 1; if(mistakemoney>0) ADOQuery1->Parameters->ParamByName("SFLX")->Value = "^"; else if(mistakemoney < 0) ADOQuery1->Parameters->ParamByName("SFLX")->Value = "v"; ADOQuery1->Parameters->ParamByName("CZY")->Value = OperatorName; ADOQuery1->Parameters->ParamByName("SCRQ")->Value = DateofLaunchCard; ADOQuery1->ExecSQL(); ADOQuery1->Close(); //插入CK表 ADOQuery1->SQL->Clear(); sqlstr = "insert into CK values(:kh,:bh,:sf_ye,:sf_fl,:ckxj,"; sqlstr += ":glf,:ckje,:lqbt,:xkje,:sycs,:sfrq,:jyno,:gzzid,:sflx,:CZY)"; ADOQuery1->SQL->Add(sqlstr); ADOQuery1->Parameters->ParamByName("kh")->Value = tmpkh; ADOQuery1->Parameters->ParamByName("bh")->Value = bhstr; ADOQuery1->Parameters->ParamByName("sf_ye")->Value = tmpye; ADOQuery1->Parameters->ParamByName("sf_fl")->Value = 1; ADOQuery1->Parameters->ParamByName("ckxj")->Value = mistakemoney; ADOQuery1->Parameters->ParamByName("glf")->Value = 0; ADOQuery1->Parameters->ParamByName("ckje")->Value = mistakemoney; ADOQuery1->Parameters->ParamByName("lqbt")->Value = 0; ADOQuery1->Parameters->ParamByName("xkje")->Value = mistakemoney; ADOQuery1->Parameters->ParamByName("sycs")->Value = tmpsycs; ADOQuery1->Parameters->ParamByName("sfrq")->Value = DateofLaunchCard; ADOQuery1->Parameters->ParamByName("jyno")->Value = 1002; ADOQuery1->Parameters->ParamByName("gzzid")->Value = 1; if(mistakemoney>0) ADOQuery1->Parameters->ParamByName("SFLX")->Value = "^"; else if(mistakemoney < 0) ADOQuery1->Parameters->ParamByName("SFLX")->Value = "v"; ADOQuery1->Parameters->ParamByName("CZY")->Value = OperatorName; ADOQuery1->ExecSQL(); ADOQuery1->Close(); //填写操作记录表 sqlstr = "insert into OperationList values(:BH,:KH,:JE,:YE,:LX,:Operator,:DateTime)"; ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(sqlstr); ADOQuery1->Parameters->ParamByName("BH")->Value = bhstr; ADOQuery1->Parameters->ParamByName("KH")->Value = tmpkh; ADOQuery1->Parameters->ParamByName("JE")->Value = mistakemoney; ADOQuery1->Parameters->ParamByName("YE")->Value = tmpye; if(mistakemoney>0) ADOQuery1->Parameters->ParamByName("LX")->Value = "充值修正"; else if(mistakemoney < 0) ADOQuery1->Parameters->ParamByName("LX")->Value = "减款修正"; ADOQuery1->Parameters->ParamByName("Operator")->Value = OperatorName; ADOQuery1->Parameters->ParamByName("DateTime")->Value = DateofLaunchCard; ADOQuery1->ExecSQL(); ADOQuery1->Close(); //更新CARD,CARD_F表 sqlstr = "select * from CARD where BH='"; sqlstr = sqlstr + bhstr + "'"; ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(sqlstr); ADOQuery1->ExecSQL(); ADOQuery1->Active = true; ADOQuery1->Edit(); ADOQuery1->FieldByName("SF_YE")->AsFloat = tmpye; ADOQuery1->FieldByName("SFYEDT")->AsDateTime = StrToDateTime(DateofLaunchCard); ADOQuery1->FieldByName("SYCS")->AsInteger = tmpsycs; ADOQuery1->Post(); sqlstr = "select * from CARD_F where BH='"; sqlstr = sqlstr + bhstr + "'"; ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(sqlstr); ADOQuery1->ExecSQL(); ADOQuery1->Active = true; ADOQuery1->Edit(); ADOQuery1->FieldByName("SF_YE")->AsFloat = tmpye; ADOQuery1->FieldByName("SFYEDT")->AsDateTime = StrToDateTime(DateofLaunchCard); ADOQuery1->FieldByName("SYCS")->AsInteger = tmpsycs; ADOQuery1->Post(); ADOQuery1->Close(); /* WriteStatus = LaunchNewCard(readcomno, keymode, secnum, key, kh, writebalance, dwmm, writesynum, daytime, cardtype, czmm, mode, Delayms); */ WriteStatus = LaunchWaterNewCard(readcomno, keymode, secnum, key, kh, writebalance, dwmm, daytime, cardtype, mode, Delayms); if(WriteStatus) { ShowMessage("写卡错误,充值失败,请修正!"); // ReChargeERRForm->ShowModal(); } else { WORD chkstatus; WORD chkWriteStatus; int chktmpbalance; int chktmpkh,chktmpsycs; double chktmpintye; double chktmpye; unsigned char chkkeymode,chksecnum,chkDelayms,chkmode; unsigned char chkkey[6]; unsigned char chkdwmm[6]; unsigned char chkdaytime[4]; unsigned char chkkh[4]; unsigned char chkbalance[4]; unsigned char chkcardtype[1]; unsigned char chkczmm[3]; unsigned char chksynum[3]; chkDelayms = DelaySecond;//0x00; chkkeymode = CARDPasswordEdition; chkmode = 0x01; chksecnum = UsingSecNUM; chkkey[0] = CARDPassword[0]; chkkey[1] = CARDPassword[1]; chkkey[2] = CARDPassword[2]; chkkey[3] = CARDPassword[3]; chkkey[4] = CARDPassword[4]; chkkey[5] = CARDPassword[5]; chkstatus = readcardinfo(readcomno,chkkeymode,chksecnum,chkkey,chkkh,chkbalance, chkdwmm,chksynum,chkdaytime,chkcardtype,chkczmm,chkDelayms); if(chkstatus > 99) { ShowMessage("充值操作有误,请修正!"); // ReChargeERRForm->ShowModal(); } else if (1 == chkstatus) { ShowMessage("充值操作有误,请修正!"); // ReChargeERRForm->ShowModal(); } else if (2 == chkstatus) { ShowMessage("充值操作有误,请修正!"); // ReChargeERRForm->ShowModal(); } else if (4 == chkstatus) { ShowMessage("充值操作有误,请修正!"); // ReChargeERRForm->ShowModal(); } else if (5 == chkstatus) { ShowMessage("充值操作有误,请修正!"); // ReChargeERRForm->ShowModal(); } else if (6 == chkstatus) { ShowMessage("充值操作有误,请修正!"); // ReChargeERRForm->ShowModal(); } else if (10 == chkstatus) { ShowMessage("充值操作有误,请修正!"); // ReChargeERRForm->ShowModal(); } else if (0 != chkstatus) { ShowMessage("充值操作有误,请修正!"); // ReChargeERRForm->ShowModal(); } else { double chktmpintye = ((double)chkbalance[1]*256*256+(double)chkbalance[2]*256+(double)chkbalance[3])/100; if(tmpye == chktmpintye) { ADOTable1->Delete(); CQKLogStream<<"CK,"<<tmpkh<<","<<mistakemoney<<","<<DateofLaunchCard.t_str()<<","<<OperatorName.t_str()<<endl; beepofreaddll(readcomno, '10'); String ReChargeOutstr = "修正成功!卡余额为:"; ReChargeOutstr += tmpye; ShowMessage(ReChargeOutstr); // CZNoticForm->Panel1->Caption = ReChargeOutstr; // CZNoticForm->ShowModal(); // ShowMessage(ReChargeOutstr); } } } } else { ShowMessage("写卡函数加载失败!"); } } } } }
void __fastcall TResendLostCardnewFRM::cxButton2Click(TObject *Sender) { enableGS = false; int kh = StrToInt(cxTextEdit14->Text); String sql = "select * from CARD where BH='"; sql = sql + cxTextEdit5->Text + "'"; InDatabaseADOQuery->Close(); InDatabaseADOQuery->SQL->Clear(); InDatabaseADOQuery->SQL->Add(sql); InDatabaseADOQuery->Open(); if(!InDatabaseADOQuery->IsEmpty()) { InDatabaseADOQuery->Edit(); InDatabaseADOQuery->FieldByName("ZT")->AsString = "挂失"; InDatabaseADOQuery->Post(); } else { } sql = "select * from CARD_F where BH='" + cxTextEdit5->Text + "'"; InDatabaseADOQuery->Close(); InDatabaseADOQuery->SQL->Clear(); InDatabaseADOQuery->SQL->Add(sql); InDatabaseADOQuery->Open(); if(!InDatabaseADOQuery->IsEmpty()) { InDatabaseADOQuery->Edit(); InDatabaseADOQuery->FieldByName("ZT")->AsString = "挂失"; InDatabaseADOQuery->Post(); } else ShowMessage("此卡信息不在CARD_F表中,请确认!"); sql = "select * from KZT where BH='" + cxTextEdit5->Text + "'"; InDatabaseADOQuery->Close(); InDatabaseADOQuery->SQL->Clear(); InDatabaseADOQuery->SQL->Add(sql); InDatabaseADOQuery->Open(); if(!InDatabaseADOQuery->IsEmpty()) { InDatabaseADOQuery->Edit(); InDatabaseADOQuery->FieldByName("GS")->AsInteger = 1; InDatabaseADOQuery->Post(); } else ShowMessage("此卡信息不在KZT表中,请确认!"); sql = "insert into GS values(:BH,:KH,:GSRQ,:USERNAME)"; InDatabaseADOQuery->Close(); InDatabaseADOQuery->SQL->Clear(); InDatabaseADOQuery->SQL->Add(sql); InDatabaseADOQuery->Parameters->ParamByName("BH")->Value = cxTextEdit5->Text; InDatabaseADOQuery->Parameters->ParamByName("KH")->Value = kh; InDatabaseADOQuery->Parameters->ParamByName("GSRQ")->Value = DateToStr(Date()); InDatabaseADOQuery->Parameters->ParamByName("USERNAME")->Value = OperatorName; InDatabaseADOQuery->ExecSQL(); InDatabaseADOQuery->Close(); InDatabaseADOQuery->SQL->Clear(); sql = "select * from SFJPARAM"; InDatabaseADOQuery->SQL->Add(sql); InDatabaseADOQuery->Open(); if(!InDatabaseADOQuery->IsEmpty()) { int pos[2000]; int port[2000]; int i = 0; InDatabaseADOQuery->First(); while(!InDatabaseADOQuery->Eof) { pos[i] = InDatabaseADOQuery->FieldByName("JH")->AsInteger; port[i] = InDatabaseADOQuery->FieldByName("SFJPORT")->AsInteger; i++; InDatabaseADOQuery->Next(); } int posnum = i; InDatabaseADOQuery->Close(); InDatabaseADOQuery->SQL->Clear(); sql = "delete from CMDLIST where PARA="; sql += kh; sql += " and status=0"; InDatabaseADOQuery->SQL->Add(sql); InDatabaseADOQuery->ExecSQL(); InDatabaseADOQuery->Close(); InDatabaseADOQuery->SQL->Clear(); sql = "insert into CMDLIST values(:SFJPORT,:SFJD,:CMD,:PARA,:STATUS,:SENDTIME)"; InDatabaseADOQuery->SQL->Add(sql); for(i = 0; i < posnum; i++) { InDatabaseADOQuery->Parameters->ParamByName("SFJPORT")->Value = port[i]; InDatabaseADOQuery->Parameters->ParamByName("SFJD")->Value = pos[i]; InDatabaseADOQuery->Parameters->ParamByName("CMD")->Value = 1; InDatabaseADOQuery->Parameters->ParamByName("PARA")->Value = kh; InDatabaseADOQuery->Parameters->ParamByName("STATUS")->Value = 0; InDatabaseADOQuery->Parameters->ParamByName("SENDTIME")->Value = NULL; InDatabaseADOQuery->ExecSQL(); } InDatabaseADOQuery->Close(); //填写操作记录表 InDatabaseADOQuery->SQL->Clear(); sql = "insert into OperationList values(:BH,:KH,:JE,:YE,:LX,:Operator,:DateTime)"; InDatabaseADOQuery->SQL->Add(sql); InDatabaseADOQuery->Parameters->ParamByName("BH")->Value = cxTextEdit5->Text; InDatabaseADOQuery->Parameters->ParamByName("KH")->Value = kh; InDatabaseADOQuery->Parameters->ParamByName("JE")->Value = 0; InDatabaseADOQuery->Parameters->ParamByName("YE")->Value = StrToFloat(cxTextEdit17->Text); InDatabaseADOQuery->Parameters->ParamByName("LX")->Value = "挂失"; InDatabaseADOQuery->Parameters->ParamByName("Operator")->Value = OperatorName; InDatabaseADOQuery->Parameters->ParamByName("DateTime")->Value = DateTimeToStr(Date()); InDatabaseADOQuery->ExecSQL(); InDatabaseADOQuery->Close(); cxButton2->Enabled = false; cxButton3->Enabled = true; enableGS = true; if(mrOk == MessageBox(this->Handle, "登记挂失信息成功,是否将单条挂失记录下传!", "请选择", MB_OKCANCEL|MB_ICONQUESTION)) { SingleGSForm->cxTextEdit1->Text = cxTextEdit14->Text; SingleGSForm->ShowModal(); } } else { ShowMessage("登记挂失信息成功,该收费系统中没有入库的POS机!"); InDatabaseADOQuery->Close(); cxButton2->Enabled = false; cxButton3->Enabled = false; enableGS = true; } }
bool AuthClientUser::OnUserFirstLogin(vector<String> *outputMsg) { //1. 取一张免费卡 vector<tagCardInfo> freeCardList; for(int i=0; i<GetAuthServerListener()->GetCardInfoCount(); i++) { tagCardInfo *info = GetAuthServerListener()->GetCardInfoByIndex(i); if(!info) continue; if(info->CardMoney != 0) continue; freeCardList.push_back(*info); } sort(freeCardList.begin(), freeCardList.end(),greater<tagCardInfo>()); String cardType, cardNo; for(DWORD i=0; i<freeCardList.size(); i++) { if(GetCard(m_ADOQuery, freeCardList[i].CardType, &cardNo, outputMsg)) { cardType = freeCardList[i].CardType; break; } } if(cardNo == "") { if(m_IsChargeProcess == 0) { //免费卡已经发放完毕 outputMsg->push_back(GBText("免费卡已经发放完毕, 请注册!")); SendRegMessage(); return false; } else { outputMsg->push_back(GBText("对不起, 免费卡已经发放完毕!")); } } //2. 创建用户 String nowStr = DateTimeToStr(Now()); m_ADOQuery->SQL->Text = FormatStr("INSERT wow_user (" "accid, last_login_time, login_count, start_time, end_time, " "total_time, money_total_time, money, login_ip, create_time, " "create_ip) VALUES(" "'%s', '%s', %d, '%s', '%s'," "%d, %d, %d, '%s', '%s'," "'%s'" ")", m_UserName, nowStr, 0, nowStr, nowStr, 0, 0, 0, m_ClientIP, nowStr, m_ClientIP ); if(!ExecSQL(m_ADOQuery)) { outputMsg->push_back(GBText("错误(9)")); return false; } m_ADOQuery->SQL->Text = FormatStr("SELECT * FROM wow_msg where msg_key = '%s'", L"first_login"); if(!OpenSQL(m_ADOQuery)) { outputMsg->push_back(GBText("错误(10)")); return false; } if(m_ADOQuery->RecordCount) { m_ADOQuery->First(); String text = m_ADOQuery->FieldByName("msg")->AsString; outputMsg->push_back(text); } //3. 充值 if(cardNo != "") { if(!Charge(m_ADOQuery, m_UserName, cardNo, outputMsg)) { return false; } } return true; }
bool Charge(TADOQuery *query, String username, String card_no, vector<String> *outputMsg) { query->SQL->Clear(); query->SQL->Text = FormatStr("SELECT * FROM wow_card WHERE card_no = '%s'", card_no); if(!OpenSQL(query)) { outputMsg->push_back(GBText("错误(11)")); return false; } if(query->RecordCount == 0) { outputMsg->push_back(GBText("充值卡卡号错误")); GetLog()->Warn("Charge Fail! Can't Find Card %s", card_no); return false; } query->First(); String cardType = query->FieldByName("card_type")->AsString; query->SQL->Text = FormatStr("SELECT * FROM used_wow_card WHERE card_no = '%s'", card_no); if(!OpenSQL(query)) { outputMsg->push_back(GBText("错误(16)")); return false; } if(query->RecordCount != 0) { outputMsg->push_back(GBText("充值卡已经被用过")); GetLog()->Warn("Charge Fail! Card Used %s", card_no); return false; } query->SQL->Text = FormatStr("INSERT used_wow_card (card_no, accid, card_type, use_time) VALUES('%s', '%s', '%s', '%s')", card_no, username, cardType, DateTimeToStr(Now())); if(!ExecSQL(query)) { outputMsg->push_back(GBText("错误(12)")); return false; } int cardDay = GetDaysByCardType(cardType); int cardMoney = GetMoneyByCardType(cardType); int money_time = cardDay; if(cardMoney == 0) { money_time = 0; } TDateTime expTime; if(!GetExpireTime(query, username, outputMsg, &expTime)) { return false; } if (expTime < Now()) { expTime = Now(); } query->SQL->Text = FormatStr("UPDATE wow_user SET end_time = CAST('%s' AS DateTime) + %d, total_time = total_time + %d, " "money_total_time = money_total_time + %d, money = money + %d where accid = '%s'", DateTimeToStr(expTime), cardDay, cardDay, money_time, cardMoney, username); if(!ExecSQL(query)) { outputMsg->push_back(GBText("错误(13)")); return false; } outputMsg->push_back(FormatStr(GBText("已冲入充值卡:%s"), GetCardNameByCardType(cardType))); return true; }
String NormalVar::OnParse(char *lpData, int Len, int &pos, int key) { String resultStr; if(m_Type == "int") { int result = (int)ReadDWORD(lpData, pos); resultStr = IntToStr(result); } else if(m_Type == "DWORD") { if(GetParseAsHex()) { DWORD result = ReadDWORD(lpData, pos); resultStr = IntToHex((int)result, 8); } else { DWORD result = (DWORD)ReadDWORD(lpData, pos); resultStr = IntToStr((__int64)result); } } else if(m_Type == "short") { short result = (short)ReadWORD(lpData, pos); resultStr = IntToStr(result); } else if(m_Type == "WORD") { if(GetParseAsHex()) { WORD result = ReadWORD(lpData, pos); resultStr = IntToHex((int)result, 4); } else { WORD result = (WORD)ReadWORD(lpData, pos); resultStr = IntToStr(result); } } else if(m_Type == "char") { char result = (char)ReadBYTE(lpData, pos); resultStr = result; } else if(m_Type == "BYTE") { if(GetParseAsHex()) { BYTE result = ReadBYTE(lpData, pos); resultStr = IntToHex((int)result, 2); } else { BYTE result = (BYTE)ReadBYTE(lpData, pos); resultStr = IntToStr(result); } } else if(m_Type == "float") { float result = ReadFloat(lpData, pos); resultStr = FloatToStr(result); } else if(m_Type == "double") { double result = ReadDouble(lpData, pos); String date = ""; try { date = DateTimeToStr(FloatToDateTime(result)); resultStr = FormatStr("%s(%s)", FloatToStr(result), date); } catch(...) { resultStr = FormatStr("%s", FloatToStr(result)); } } else if(m_Type == "DateTime") { double result = ReadDouble(lpData, pos); String date = DateTimeToStr(FloatToDateTime(result)); resultStr = FormatStr("%s", date); } return resultStr; }
void TFormPici::GenStatFile(void) { extern char *xlsHead; char pbuf[128]; extern String g_curStatFile,g_piciNumber,g_piciOperator,g_piciProductLine,g_piciProductCode,g_piciCheckweigher,g_piciProductName; extern TDateTime piciStartTime,piciOverTime; if(FileExists(g_curStatFile)) { int fileAttr= FileGetAttr(g_curStatFile); if((fileAttr & faReadOnly)!=0)FileSetAttr(g_curStatFile,fileAttr&~faReadOnly); } FILE *f=fopen(g_curStatFile.c_str(),"wb"); if(!f)return; fprintf(f,"%s\r\n",xlsHead); fprintf(f,"<center><strong><font size=4>%03d统计报表</font></strong></center>",g_CurPiciProductID); fprintf(f,"<table width=640 border=1>\r\n"); fprintf(f,"<tr align=center><td align=right bgcolor=#DFDFDF>生产线号:</td><td>%s</td><td align=right bgcolor=#DFDFDF>产品编号:</td><td>%s</td><td bgcolor=#DFDFDF align=right>批次号:</td><td>%s</td></tr>\r\n",g_piciProductLine.c_str(),g_piciProductCode.c_str(),g_piciNumber.c_str()); fprintf(f,"<tr align=center><td align=right bgcolor=#DFDFDF>检重秤号:</td><td>%s</td><td align=right bgcolor=#DFDFDF>产品名称:</td><td>%s</td><td bgcolor=#DFDFDF align=right>操作员:</td><td>%s</td></tr>\r\n",g_piciCheckweigher.c_str() ,g_piciProductName.c_str() ,g_piciOperator.c_str()); fprintf(f,"<tr><td colspan=6></td></tr>"); fprintf(f,"<tr bgcolor=#DFDFDF align=center><td colspan=2>全部产品</td><td colspan=2>合格产品</td><td colspan=2>不合格产品</td></tr>\r\n"); fprintf(f,"<tr align=center><td align=right>数量合计:</td><td>%dpcs</td><td align=right>数量合计:</td><td>%dpcs</td><td align=right>数量合计:</td><td>%dpcs</td></tr>\r\n",g_PiciCounter,qualified_counter,g_PiciCounter-qualified_counter); fprintf(f,"<tr align=center><td align=right>重量总计:</td><td>%s%s</td><td align=right>重量总计:</td><td>%s%s</td><td align=right>重量总计:</td><td>%s%s</td></tr>\r\n",Edit_totalWeight->Text.c_str(),strDefaultUnit.c_str(),Edit_totalWeight1->Text.c_str(),strDefaultUnit.c_str(),WeightToStr(totalweight-totalweight1).c_str(),strDefaultUnit.c_str()); int ll_count=0; for(int i=0;i<g_PiciCounter;i++){if(weight_values[i]<weight_ll)ll_count++;} fprintf(f,"<tr align=center><td align=right>标准偏差:</td><td>%s%s</td><td align=right>标准偏差:</td><td>%s%s</td><td align=right>超下限数量合计:</td><td>%dpcs</td></tr>\r\n",Edit_StandardDeviation->Text.c_str(),strDefaultUnit.c_str(),Edit_StandardDeviation1->Text.c_str(),strDefaultUnit.c_str(),ll_count); fprintf(f,"<tr align=center><td align=right>平均值:</td><td>%s%s</td><td align=right>平均值:</td><td>%s%s</td><td align=right>超上限数量合计:</td><td>%dpcs</td></tr>\r\n",Edit_Average->Text.c_str(),strDefaultUnit.c_str(),Edit_Average1->Text.c_str(),strDefaultUnit.c_str(),g_PiciCounter-qualified_counter-ll_count); fprintf(f,"<tr align=center><td align=right>最小值:</td><td>%s%s</td><td align=right>最小值:</td><td>%s%s</td><td colspan=2></td></tr>\r\n",Edit_MinWeight->Text.c_str(),strDefaultUnit.c_str(),Edit_MinWeight1->Text.c_str(),strDefaultUnit.c_str()); fprintf(f,"<tr align=center><td align=right>最大值:</td><td>%s%s</td><td align=right>最大值:</td><td>%s%s</td><td colspan=2></td></tr>\r\n",Edit_MaxWeight->Text.c_str(),strDefaultUnit.c_str(),Edit_MaxWeight1->Text.c_str(),strDefaultUnit.c_str()); fprintf(f,"<tr align=center><td align=right>合格率:</td><td>%s%%</td><td colspan=4></td></tr>\r\n",Edit_QualifiedRate->Text.c_str()); fprintf(f,"<tr><td colspan=6></td></tr>"); fprintf(f,"<tr align=center><td align=right>批次开始时间:</td><td>%s</td><td colspan=4></td></tr>\r\n",DateTimeToStr(piciStartTime).c_str()); fprintf(f,"<tr align=center><td align=right>批次结束时间:</td><td>%s</td><td colspan=4></td></tr>\r\n",DateTimeToStr(piciOverTime).c_str()); fprintf(f,"</table></body></html>"); fclose(f); FileSetAttr(g_curStatFile, faReadOnly); }
void __fastcall TWithDrawERRForm::cxButton2Click(TObject *Sender) { WORD status; int tmpbalance; int tmpkh,tmpsycs; double tmpintye; double tmpye; unsigned char keymode,secnum,Delayms,mode; unsigned char key[6]; unsigned char dwmm[6]; unsigned char daytime[4]; unsigned char kh[4]; unsigned char balance[4]; unsigned char cardtype[1]; unsigned char czmm[3]; unsigned char synum[3]; mode = 0x02; Delayms = DelaySecond; keymode = CARDPasswordEdition; secnum = UsingSecNUM; key[0] = CARDPassword[0]; key[1] = CARDPassword[1]; key[2] = CARDPassword[2]; key[3] = CARDPassword[3]; key[4] = CARDPassword[4]; key[5] = CARDPassword[5]; if(LoadHModule) { if(readwatercardinfo)//readcardinfo) { // status = readcardinfo(readcomno,keymode,secnum,key,kh,balance, // dwmm,synum,daytime,cardtype,czmm,Delayms); status = readwatercardinfo(readcomno,keymode,secnum,key,kh,balance, dwmm,daytime,cardtype,Delayms); if(status > 99) { ShowMessage("通讯错误!"); } else if (1 == status) { ShowMessage("请把卡片放好!"); } else if (2 == status) { ShowMessage("卡号大于192000或等于0!"); } else if (4 == status) { ShowMessage("卡片密码不对!"); } else if (5 == status) { ShowMessage("读写卡不稳定!"); } else if (6 == status) { ShowMessage("卡结构不对!"); } else if (10 == status) { ShowMessage("卡结构不对!"); } else if (0 != status) { ShowMessage("该卡未发行或已退卡!"); } else { ADOReChargeQuery->Close(); ADOReChargeQuery->SQL->Clear(); ADOReChargeQuery->SQL->Add("select * from XTSET"); String mmstr = ""; unsigned char tmpchar; tmpchar = dwmm[0]; tmpchar = tmpchar>>4; mmstr += (int)tmpchar; tmpchar = dwmm[0]; tmpchar = tmpchar<<4; tmpchar = tmpchar>>4; mmstr += (int)tmpchar; tmpchar = dwmm[1]; tmpchar = tmpchar>>4; mmstr += (int)tmpchar; tmpchar = dwmm[1]; tmpchar = tmpchar<<4; tmpchar = tmpchar>>4; mmstr += (int)tmpchar; ADOReChargeQuery->Close(); String tmpstr; tmpkh = (int)kh[1]*256*256+(int)kh[2]*256+(int)kh[3]; tmpsycs = 0;//(int)synum[0]*256+(int)synum[1]; tmpintye = (double)balance[1]*256*256+(double)balance[2]*256+(double)balance[3]; tmpye = tmpintye/100; ADOReChargeQuery->Close(); ADOReChargeQuery->SQL->Clear(); tmpstr = "select * from KZT where kh="; tmpstr += tmpkh; ADOReChargeQuery->SQL->Add(tmpstr); ADOReChargeQuery->Open(); if(!ADOReChargeQuery->IsEmpty()) { if(0 != ADOReChargeQuery->FieldByName("GS")->AsInteger) { ShowMessage("此卡已挂失,请没收此卡!"); ADOReChargeQuery->Close(); return; } } else { ShowMessage("此卡不是本系统发出的卡!"); ADOReChargeQuery->Close(); return; } ADOReChargeQuery->Close(); ADOReChargeQuery->SQL->Clear(); tmpstr = "select * from CARD where kh="; tmpstr += tmpkh; ADOReChargeQuery->SQL->Add(tmpstr); ADOReChargeQuery->Open(); if(!ADOReChargeQuery->IsEmpty()) { ADOReChargeQuery->Close(); beepofreaddll(readcomno, '10'); int oldkh = StrToInt(cxTextEdit1->Text.Trim()); if(oldkh == tmpkh) { cxTextEdit18->Text = tmpye; ADOReChargeQuery->SQL->Clear(); String Chksqlstr = "select * from HJL where KH="; Chksqlstr += tmpkh; Chksqlstr += " order by OPTIME asc"; ADOReChargeQuery->SQL->Add(Chksqlstr); ADOReChargeQuery->Open(); if(ADOReChargeQuery->IsEmpty()) { beepofreaddll(readcomno, '10'); String ReChargeOutstr = "取款成功!卡余额为:"; ReChargeOutstr += tmpye; ShowMessage(ReChargeOutstr); this->Close(); } else { if(tmpye == ADOReChargeQuery->FieldByName("YE")->AsFloat) { beepofreaddll(readcomno, '10'); String ReChargeOutstr = "取款成功!卡余额为:"; ReChargeOutstr += tmpye; ShowMessage(ReChargeOutstr); ADOReChargeQuery->Close(); this->Close(); } else { //写充值金额 if(!LaunchWaterNewCard)//LaunchNewCard) { ShowMessage("写卡函数加载失败"); return; } tmpsycs = 0;//(int)synum[0]*256+(int)synum[1]; tmpsycs++; unsigned char writesynum[2]; writesynum[0] = (char)(tmpsycs/256); writesynum[1] = (char)(tmpsycs%256); unsigned char writebalance[4]; ADOReChargeQuery->Last(); int ReChargeMoney = ADOReChargeQuery->FieldByName("JE")->AsInteger; double writetmpbalance = ADOReChargeQuery->FieldByName("JE")->AsFloat; tmpye -= writetmpbalance; writetmpbalance *= 100; writebalance[0] = 0x00; writebalance[1] = (unsigned char)((int)writetmpbalance/65536); writetmpbalance = (int)writetmpbalance%65536; writebalance[2] = (unsigned char)((int)writetmpbalance/256); writetmpbalance = (int)writetmpbalance%256; writebalance[3] = (unsigned char)writetmpbalance; WORD WriteStatus; String DateofLaunchCard; SYSTEMTIME tmpsystime; GetLocalTime(&tmpsystime); DateofLaunchCard = DateTimeToStr(SystemTimeToDateTime(tmpsystime)); /* WriteStatus = LaunchNewCard(readcomno, keymode, secnum, key, kh, writebalance, dwmm, writesynum, daytime, cardtype, czmm, mode, Delayms); */ WriteStatus = LaunchWaterNewCard(readcomno, keymode, secnum, key, kh, writebalance, dwmm, daytime, cardtype, mode, Delayms); if(WriteStatus) { ShowMessage("修正失败,请重试!"); ADOReChargeQuery->Close(); return; } else { //取款入库、入狗开始 ADOReChargeQuery->Close(); ADOReChargeQuery->SQL->Clear(); String sqlstr = "insert into MX values(:BH,:KH,:SF_YE,"; sqlstr = sqlstr + ":SFJE,:SYCS,:SFRQ,:JYNO,"; sqlstr = sqlstr + ":GZZID,:SFLX,:CZY,:SCRQ)"; ADOReChargeQuery->SQL->Add(sqlstr); ADOReChargeQuery->Parameters->ParamByName("BH")->Value = cxTextEdit7->Text; ADOReChargeQuery->Parameters->ParamByName("KH")->Value = tmpkh; ADOReChargeQuery->Parameters->ParamByName("SF_YE")->Value = tmpye; ADOReChargeQuery->Parameters->ParamByName("SFJE")->Value = ReChargeMoney; ADOReChargeQuery->Parameters->ParamByName("SYCS")->Value = tmpsycs; ADOReChargeQuery->Parameters->ParamByName("SFRQ")->Value = DateofLaunchCard; ADOReChargeQuery->Parameters->ParamByName("JYNO")->Value = 1001; ADOReChargeQuery->Parameters->ParamByName("GZZID")->Value = 1; ADOReChargeQuery->Parameters->ParamByName("SFLX")->Value = "d"; ADOReChargeQuery->Parameters->ParamByName("CZY")->Value = OperatorName; ADOReChargeQuery->Parameters->ParamByName("SCRQ")->Value = DateofLaunchCard; ADOReChargeQuery->ExecSQL(); ADOReChargeQuery->Close(); //插入CK表 ADOReChargeQuery->SQL->Clear(); sqlstr = "insert into CK values(:kh,:bh,:sf_ye,:sf_fl,:ckxj,"; sqlstr += ":glf,:ckje,:lqbt,:xkje,:sycs,:sfrq,:jyno,:gzzid,:sflx,:CZY)"; ADOReChargeQuery->SQL->Add(sqlstr); ADOReChargeQuery->Parameters->ParamByName("kh")->Value = tmpkh; ADOReChargeQuery->Parameters->ParamByName("bh")->Value = cxTextEdit7->Text; ADOReChargeQuery->Parameters->ParamByName("sf_ye")->Value = tmpye; ADOReChargeQuery->Parameters->ParamByName("sf_fl")->Value = 1; ADOReChargeQuery->Parameters->ParamByName("ckxj")->Value = ReChargeMoney; ADOReChargeQuery->Parameters->ParamByName("glf")->Value = 0; ADOReChargeQuery->Parameters->ParamByName("ckje")->Value = ReChargeMoney; ADOReChargeQuery->Parameters->ParamByName("lqbt")->Value = 0; ADOReChargeQuery->Parameters->ParamByName("xkje")->Value = ReChargeMoney; ADOReChargeQuery->Parameters->ParamByName("sycs")->Value = tmpsycs; ADOReChargeQuery->Parameters->ParamByName("sfrq")->Value = DateofLaunchCard; ADOReChargeQuery->Parameters->ParamByName("jyno")->Value = 1001; ADOReChargeQuery->Parameters->ParamByName("gzzid")->Value = 1; ADOReChargeQuery->Parameters->ParamByName("sflx")->Value = "d"; ADOReChargeQuery->Parameters->ParamByName("CZY")->Value = OperatorName; ADOReChargeQuery->ExecSQL(); ADOReChargeQuery->Close(); //填写操作记录表 sqlstr = "insert into OperationList values(:BH,:KH,:JE,:YE,:LX,:Operator,:DateTime)"; ADOReChargeQuery->SQL->Clear(); ADOReChargeQuery->SQL->Add(sqlstr); ADOReChargeQuery->Parameters->ParamByName("BH")->Value = cxTextEdit7->Text; ADOReChargeQuery->Parameters->ParamByName("KH")->Value = tmpkh; ADOReChargeQuery->Parameters->ParamByName("JE")->Value = ReChargeMoney; ADOReChargeQuery->Parameters->ParamByName("YE")->Value = tmpye; ADOReChargeQuery->Parameters->ParamByName("LX")->Value = "取款"; ADOReChargeQuery->Parameters->ParamByName("Operator")->Value = OperatorName; ADOReChargeQuery->Parameters->ParamByName("DateTime")->Value = DateofLaunchCard; ADOReChargeQuery->ExecSQL(); ADOReChargeQuery->Close(); //更新CARD,CARD_F表 sqlstr = "select * from CARD where BH='"; sqlstr = sqlstr + cxTextEdit7->Text + "'"; ADOReChargeQuery->SQL->Clear(); ADOReChargeQuery->SQL->Add(sqlstr); ADOReChargeQuery->Open(); if(!ADOReChargeQuery->IsEmpty()) { ADOReChargeQuery->Edit(); ADOReChargeQuery->FieldByName("SF_YE")->AsFloat = tmpye; ADOReChargeQuery->FieldByName("SFYEDT")->AsDateTime = StrToDateTime(DateofLaunchCard); ADOReChargeQuery->FieldByName("SYCS")->AsInteger = tmpsycs; ADOReChargeQuery->Post(); } sqlstr = "select * from CARD_F where BH='"; sqlstr = sqlstr + cxTextEdit7->Text + "'"; ADOReChargeQuery->SQL->Clear(); ADOReChargeQuery->SQL->Add(sqlstr); ADOReChargeQuery->Open(); if(!ADOReChargeQuery->IsEmpty()) { ADOReChargeQuery->Edit(); ADOReChargeQuery->FieldByName("SF_YE")->AsFloat = tmpye; ADOReChargeQuery->FieldByName("SFYEDT")->AsDateTime = StrToDateTime(DateofLaunchCard); ADOReChargeQuery->FieldByName("SYCS")->AsInteger = tmpsycs; ADOReChargeQuery->Post(); } ADOReChargeQuery->Close(); //写加密狗充值总额 if(DOGChk) { unsigned char tempbuf[8]; SFK_ZE -= ReChargeMoney; UpZETable->FieldByName("SFKZE")->AsFloat -= ReChargeMoney; memcpy(tempbuf,&SFK_ZE,8); unsigned char hightempchar1; unsigned char lowtempchar1; for(int t = 0; t < 8; t++) { hightempchar1 = tempbuf[t]&0xf0; lowtempchar1 = tempbuf[t]&0x0f; hightempchar1 = hightempchar1>>4; hightempchar1 = hightempchar1&0x0f; lowtempchar1 = lowtempchar1<<4; lowtempchar1 = lowtempchar1&0xf0; tempbuf[t] = hightempchar1|lowtempchar1; } int dogoffset = 0x0034; int doglen = 8; RY3_Write(doghandle,dogoffset,tempbuf,doglen); } //写加密狗完毕 //取款入库、入狗结束 beepofreaddll(readcomno, '10'); String ReChargeOutstr = "取款成功!卡余额为:"; // ReChargeOutstr += tmpye; ReChargeOutstr += tmpye; ShowMessage(ReChargeOutstr); ADOReChargeQuery->Last(); ADOReChargeQuery->Delete(); ADOReChargeQuery->Close(); this->Close(); } } } } else { beepofreaddll(readcomno, '10'); ShowMessage("此卡不是充值出错的卡片,请更换!"); } // ReadCardBTN->Enabled = false; } else {
//--------------------------------------------------------------------------- void TFormPici::GenFinalReportFile(void) { extern char *xlsHead; extern String g_curFinalReport,g_piciProductDesc,g_piciNumber,g_piciOperator,g_piciProductLine,g_piciProductCode,g_piciCheckweigher,g_piciProductName; extern TDateTime piciStartTime,piciOverTime; if(FileExists(g_curFinalReport)) { int fileAttr= FileGetAttr(g_curFinalReport); if((fileAttr & faReadOnly)!=0)FileSetAttr(g_curFinalReport,fileAttr&~faReadOnly); } FILE *f=fopen(g_curFinalReport.c_str(),"wb"); if(!f)return; fprintf(f,"%s\r\n",xlsHead); fprintf(f,"<center><strong><font size=4>%03d最终报表</font></strong></center>\r\n",g_CurPiciProductID); fprintf(f,"<table width=640 border=1>\r\n"); fprintf(f,"<tr align=left><td colspan=2>产品编号:</td><td colspan=4>%s</td></tr>\r\n",g_piciProductCode.c_str()); fprintf(f,"<tr align=left><td colspan=2>产品名称:</td><td colspan=4>%s</td></tr>\r\n",g_piciProductCode.c_str()); fprintf(f,"<tr align=left><td colspan=2>产品描述:</td><td colspan=4>%s</td></tr>\r\n",g_piciProductDesc.c_str()); fprintf(f,"<tr align=left><td colspan=2>生产线号:</td><td colspan=4>%s</td></tr>\r\n",g_piciProductLine.c_str()); fprintf(f,"<tr align=left><td colspan=2>检重秤号:</td><td colspan=4>%s</td></tr>\r\n",g_piciCheckweigher.c_str()); fprintf(f,"<tr align=left><td colspan=2>批次号:</td><td colspan=4>%s</td></tr>\r\n",g_piciNumber.c_str()); fprintf(f,"<tr align=left><td colspan=2>操作员:</td><td colspan=4>%s</td></tr>\r\n",g_piciOperator.c_str()); #if 0 fprintf(f,"<tr align=left><td colspan=2>件数:</td><td colspan=4>%d</td></tr>",g_PiciCounter); #else if(g_PiciCapacity==DefaultPiciCapacity) { fprintf(f,"<tr align=left><td colspan=2>件数:</td><td colspan=4></td></tr>"); } else { fprintf(f,"<tr align=left><td colspan=2>件数:</td><td colspan=4>%d</td></tr>",g_PiciCapacity); } #endif fprintf(f,"<tr align=left><td colspan=2>批次开始时间:</td><td colspan=4>%s</td></tr>",DateTimeToStr(piciStartTime).c_str()); fprintf(f,"<tr align=left><td colspan=2>批次结束时间:</td><td colspan=4>%s</td></tr>",DateTimeToStr(piciOverTime).c_str()); fprintf(f,"<tr><td colspan=6></td></tr>"); MyQuery->SQL->Text="select `configs`.*,`catalog`.* from `configs`,`catalog` where `catalog`.id="+IntToStr(g_CurPiciProductID); MyQuery->Active=true; float f_pdsd_1=CALC_PDSU(MyQuery->FieldByName("dev_ctcd")->AsFloat,MyQuery->FieldByName("dev_passrate")->AsFloat); float f_pdsd_2=CALC_PDSU(MyQuery->FieldByName("dev_ctcd")->AsFloat,MyQuery->FieldByName("pass_rate")->AsFloat); fprintf(f,"<tr align=center><td width=100 align=right>秤台长度:</td><td colspan=2>%0.03fmm</td><td width=100 align=right>通过率:</td><td colspan=2>%0.03fpcs/min</td></tr>",MyQuery->FieldByName("dev_ctcd")->AsFloat,MyQuery->FieldByName("dev_passrate")->AsFloat); fprintf(f,"<tr align=center><td width=100 align=right>轴间距离:</td><td colspan=2>%0.03fmm</td><td width=100 align=right>皮带速度:</td><td colspan=2>%0.3fm/min</td></tr>",MyQuery->FieldByName("dev_zjjl")->AsFloat,f_pdsd_1); fprintf(f,"<tr align=center><td width=100 align=right>轴直径:</td><td colspan=2>%0.03fmm</td><td width=100 align=right>实际频率:</td><td colspan=2>%0.03fHz</td></tr>",MyQuery->FieldByName("dev_zzj")->AsFloat,50.0*f_pdsd_1/MyQuery->FieldByName("dev_zdpdsd")->AsFloat); fprintf(f,"<tr><td colspan=6></td></tr>"); fprintf(f,"<tr align=center><td width=100 align=right>最大皮带速度:</td><td colspan=2>%0.03fm/min</td><td width=100 align=right>最大称重:</td><td colspan=2>%0.03f%s</td></tr>",MyQuery->FieldByName("dev_zdpdsd")->AsFloat,weight_kg2default(MyQuery->FieldByName("dev_zdcz")->AsFloat),strDefaultUnit.c_str()); fprintf(f,"<tr align=center><td width=100 align=right>最小皮带速度:</td><td colspan=2>%0.03fm/min</td><td width=100 align=right>最小称重:</td><td colspan=2>%0.03f%s</td></tr>",MyQuery->FieldByName("dev_zxpdsd")->AsFloat,weight_kg2default(MyQuery->FieldByName("dev_zxcz")->AsFloat),strDefaultUnit.c_str()); fprintf(f,"<tr align=center><td width=100 align=right>最大频率:</td><td colspan=2>%0.03fHz</td><td width=100 align=right>显示分度:</td><td colspan=2>%0.03f%s</td></tr>",MyQuery->FieldByName("dev_zdpl")->AsFloat,weight_kg2default(MyQuery->FieldByName("dev_xsfd")->AsFloat),strDefaultUnit.c_str()); fprintf(f,"<tr align=center><td width=100 align=right>最小频率:</td><td colspan=2>%0.03fHz</td><td width=100 align=right>显示单位:</td><td colspan=2>%s</td></tr>",MyQuery->FieldByName("dev_zxpl")->AsFloat,(MyQuery->FieldByName("dev_autozero")->AsInteger)?"g":"kg"); fprintf(f,"<tr><td colspan=6></td></tr>"); fprintf(f,"<tr align=center><td align=right>目标值:</td><td colspan=2>%0.03f%s</td><td align=right>通过率:</td><td colspan=2>%0.03fpcs/min</td></tr>\r\n",weight_tp,strDefaultUnit.c_str(),MyQuery->FieldByName("pass_rate")->AsFloat); fprintf(f,"<tr align=center><td align=right>下限值:</td><td colspan=2>%0.03f%s</td><td align=right>皮带速度:</td><td colspan=2>%0.03fm/min</td></tr>\r\n",weight_ll,strDefaultUnit.c_str(),f_pdsd_2); fprintf(f,"<tr align=center><td align=right>上限值:</td><td colspan=2>%0.03f%s</td><td align=right>修正系数:</td><td colspan=2>%0.03fm/min</td></tr>\r\n",weight_ul,strDefaultUnit.c_str(),MyQuery->FieldByName("correction_factor")->AsFloat); fprintf(f,"<tr><td colspan=6></td></tr>"); fprintf(f,"<tr align=center><td align=right>剔除等待时间:</td><td colspan=2>%ds</td><td align=right>统计范围:</td><td colspan=2>%0.03f%%</td></tr>\r\n",MyQuery->FieldByName("tc_waittime")->AsInteger,MyQuery->FieldByName("stat_range")->AsFloat*100); fprintf(f,"<tr align=center><td align=right>剔除动作时间:</td><td colspan=2>%ds<td align=right>包装长度:</td><td colspan=2>%0.03fmm</td></tr>\r\n",MyQuery->FieldByName("tc_actiontime")->AsInteger,MyQuery->FieldByName("pack_length")->AsFloat); fprintf(f,"<tr align=center><td align=right>称重显示模式:</td><td colspan=2>%s<td align=right>预置皮重:</td><td colspan=2>%0.03f%s</td></tr>\r\n",(MyQuery->FieldByName("gross_or_net")->AsInteger==0)?"Gross":"Net",weight_kg2default(MyQuery->FieldByName("preset_tare")->AsFloat),strDefaultUnit.c_str()); fprintf(f,"<tr><td colspan=6></td></tr>"); fprintf(f,"<tr bgcolor=#DFDFDF align=center><td colspan=2>全部产品</td><td colspan=2>合格产品</td><td colspan=2>不合格产品</td></tr>\r\n"); fprintf(f,"<tr align=center><td align=right>数量合计:</td><td>%dpcs</td><td align=right>数量合计:</td><td>%dpcs</td><td align=right>数量合计:</td><td>%dpcs</td></tr>\r\n",g_PiciCounter,qualified_counter,g_PiciCounter-qualified_counter); fprintf(f,"<tr align=center><td align=right>重量总计:</td><td>%s%s</td><td align=right>重量总计:</td><td>%s%s</td><td align=right>重量总计:</td><td>%s%s</td></tr>\r\n",Edit_totalWeight->Text.c_str(),strDefaultUnit.c_str(),Edit_totalWeight1->Text.c_str(),strDefaultUnit.c_str(),WeightToStr(totalweight-totalweight1).c_str(),strDefaultUnit.c_str()); int ll_count=0; for(int i=0;i<g_PiciCounter;i++){if(weight_values[i]<weight_ll)ll_count++;} fprintf(f,"<tr align=center><td align=right>标准偏差:</td><td>%s%s</td><td align=right>标准偏差:</td><td>%s%s</td><td align=right>超下限数量合计:</td><td>%dpcs</td></tr>\r\n",Edit_StandardDeviation->Text.c_str(),strDefaultUnit.c_str(),Edit_StandardDeviation1->Text.c_str(),strDefaultUnit.c_str(),ll_count); fprintf(f,"<tr align=center><td align=right>平均值:</td><td>%s%s</td><td align=right>平均值:</td><td>%s%s</td><td align=right>超上限数量合计:</td><td>%dpcs</td></tr>\r\n",Edit_Average->Text.c_str(),strDefaultUnit.c_str(),Edit_Average1->Text.c_str(),strDefaultUnit.c_str(),g_PiciCounter-qualified_counter-ll_count); fprintf(f,"<tr align=center><td align=right>最小值:</td><td>%s%s</td><td align=right>最小值:</td><td>%s%s</td><td colspan=2></td></tr>\r\n",Edit_MinWeight->Text.c_str(),strDefaultUnit.c_str(),Edit_MinWeight1->Text.c_str(),strDefaultUnit.c_str()); fprintf(f,"<tr align=center><td align=right>最大值:</td><td>%s%s</td><td align=right>最大值:</td><td>%s%s</td><td colspan=2></td></tr>\r\n",Edit_MaxWeight->Text.c_str(),strDefaultUnit.c_str(),Edit_MaxWeight1->Text.c_str(),strDefaultUnit.c_str()); fprintf(f,"<tr align=center><td align=right>合格率:</td><td>%s%%</td><td colspan=4></td></tr>\r\n",Edit_QualifiedRate->Text.c_str()); fprintf(f,"<tr><td colspan=6></td></tr>"); MyQuery->Active=false; fprintf(f,"</table></body></html>"); fclose(f); FileSetAttr(g_curFinalReport, faReadOnly); }
void AuthClientUser::OnLoginSuccess() { m_ADOQuery->SQL->Text = FormatStr("UPDATE wow_user SET last_login_time='%s', login_count=login_count+1, login_ip='%s' where accid = '%s'", DateTimeToStr(Now()), m_ClientIP, m_UserName); ExecSQL(m_ADOQuery); }
void __fastcall TResendLostCardnewFRM::cxButton3Click(TObject *Sender) { //New Card /* ADOQuery2->Close(); ADOQuery2->SQL->Clear(); ADOQuery2->SQL->Add("select min(KH) as maxkh from KZT where SY='N' and GS=0"); ADOQuery2->Open(); if(!ADOQuery2->IsEmpty()) { cxTextEdit18->Text = ADOQuery2->FieldByName("maxkh")->AsInteger; */ if(cxTextEdit18->Text.IsEmpty()) { ShowMessage("必须输入补卡号!"); return; } int tmpbkh = StrToInt(cxTextEdit18->Text); if(tmpbkh > 189999) { ShowMessage("补卡号不能大于189999!"); return; } int middlekh; ADOQuery2->Close(); ADOQuery2->SQL->Clear(); String tmpsqlstr = "select * from KZT where KH="; tmpsqlstr += cxTextEdit18->Text; tmpsqlstr += " and SY='N' and GS='0'"; ADOQuery2->SQL->Add(tmpsqlstr); ADOQuery2->Open(); if(!ADOQuery2->IsEmpty()) { ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = -1; ADOQuery2->Post(); //launchnewcard WORD status; int tmpbalance; int tmpkh,tmpsycs; double tmpintye; double tmpye; unsigned char keymode,secnum,Delayms,mode; unsigned char key[6]; unsigned char dwmm[6]; unsigned char daytime[4]; unsigned char kh[4]; unsigned char balance[4]; unsigned char cardtype[1]; unsigned char czmm[3]; unsigned char synum[3]; // unsigned char readcomno[5] = ""; Delayms = DelaySecond; keymode = CARDPasswordEdition; secnum = UsingSecNUM; key[0] = CARDPassword[0]; key[1] = CARDPassword[1]; key[2] = CARDPassword[2]; key[3] = CARDPassword[3]; key[4] = CARDPassword[4]; key[5] = CARDPassword[5]; if(LoadHModule) { if(readwatercardinfo)//readcardinfo) { // status = readcardinfo(readcomno,keymode,secnum,key,kh,balance,dwmm,synum,daytime,cardtype,czmm,Delayms); status = readwatercardinfo(readcomno,keymode,secnum,key,kh,balance,dwmm,daytime,cardtype,Delayms); if(status > 99) { ShowMessage("通讯错误!"); ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = StrToInt(cxTextEdit18->Text); ADOQuery2->Post(); } else if (1 == status) { ShowMessage("请把卡片放好!"); ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = StrToInt(cxTextEdit18->Text); ADOQuery2->Post(); } else if (2 == status) { ShowMessage("卡号大于192000或等于0!"); cxButton3->Enabled = false; ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = StrToInt(cxTextEdit18->Text); ADOQuery2->Post(); } else if (4 == status) { ShowMessage("卡片密码不对!"); cxButton3->Enabled = false; ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = StrToInt(cxTextEdit18->Text); ADOQuery2->Post(); } else if (5 == status) { ShowMessage("读写卡不稳定!"); cxButton3->Enabled = false; ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = StrToInt(cxTextEdit18->Text); ADOQuery2->Post(); } else if (0 == status) { ShowMessage("此卡不能做为新卡发行,请更换新卡!"); cxButton3->Enabled = false; ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = StrToInt(cxTextEdit18->Text); ADOQuery2->Post(); } else { unsigned char writesynum[2]; writesynum[0] = 0x00; writesynum[1] = 0x00; int maxsycs1 = 0; int maxsycs2 = 0; int maxsycs; String maxsycssqlstr = "select MAX(sycs) as maxsycs from MX where BH='"; maxsycssqlstr += cxTextEdit5->Text; maxsycssqlstr += "'"; ADOQuery3->Close(); ADOQuery3->SQL->Clear(); ADOQuery3->SQL->Add(maxsycssqlstr); ADOQuery3->Open(); if(!ADOQuery3->IsEmpty()) { maxsycs1 = ADOQuery3->FieldByName("maxsycs")->AsInteger; } ADOQuery3->Close(); maxsycssqlstr = "select MAX(sycs) as maxsycs from MXBAK where BH='"; maxsycssqlstr += cxTextEdit5->Text; maxsycssqlstr += "'"; ADOQuery3->SQL->Clear(); ADOQuery3->SQL->Add(maxsycssqlstr); ADOQuery3->Open(); if(!ADOQuery3->IsEmpty()) { maxsycs2 = ADOQuery3->FieldByName("maxsycs")->AsInteger; } ADOQuery3->Close(); if(maxsycs1 < maxsycs2) maxsycs = maxsycs2; else maxsycs = maxsycs1; writesynum[0] = (unsigned char)(maxsycs/256); writesynum[1] = (unsigned char)(maxsycs%256); WORD writestatus; unsigned char writedaytime[4]; unsigned char writebalance[4]; unsigned char writeczmm[3]; unsigned char writecardtype[1]; unsigned char writekh[4]; int writetmpkh = atoi(cxTextEdit18->Text.t_str()); writekh[0] = (char)(writetmpkh/256/256/256); writekh[1] = (char)((writetmpkh%(256*256*256))/256/256); writekh[2] = (char)((writetmpkh%(256*256))/256); writekh[3] = (char)writetmpkh; unsigned char writereadcomno[5] = readcomno; unsigned char writekeymode = keymode; unsigned char writesecnum = secnum; unsigned char writekey[6];// = key; writekey[0] = CARDPassword[0]; writekey[1] = CARDPassword[1]; writekey[2] = CARDPassword[2]; writekey[3] = CARDPassword[3]; writekey[4] = CARDPassword[4]; writekey[5] = CARDPassword[5]; unsigned char writedwmm[2]; writedwmm[0] = DWPassword[0]; writedwmm[1] = DWPassword[1]; unsigned char writemode = 0x00; unsigned char writeDelayms = DelaySecond; String writetmpstr = DateToStr(UseDateEdit->Date); char* writetmpdatestr = writetmpstr.t_str(); writedaytime[0] = char(((int)writetmpdatestr[2]-48)*16+((int)writetmpdatestr[3]-48)); writedaytime[1] = char(((int)writetmpdatestr[5]-48)*16+((int)writetmpdatestr[6]-48)); writedaytime[2] = char(((int)writetmpdatestr[8]-48)*16+((int)writetmpdatestr[9]-48)); writedaytime[3] = 0x00; // ShowMessage(PrepayTextEdit->Text.t_str()); double writetmpbalance = StrToFloat(cxTextEdit17->Text); writetmpbalance *= 100; writebalance[0] = 0x00; writebalance[1] = (char)((int)writetmpbalance/65536); writetmpbalance = (int)writetmpbalance%65536; writebalance[2] = (char)((int)writetmpbalance/256); writetmpbalance = (int)writetmpbalance%256; writebalance[3] = (char)writetmpbalance; unsigned char writetmpczmm[5]; strcpy(writetmpczmm, cxTextEdit12->Text.t_str()); writetmpczmm[0] = writetmpczmm[0]<<4; writetmpczmm[1] = writetmpczmm[1]<<4; writetmpczmm[1] = writetmpczmm[1]>>4; writeczmm[0] = writetmpczmm[0] + writetmpczmm[1]; writetmpczmm[2] = writetmpczmm[2]<<4; writetmpczmm[3] = writetmpczmm[3]<<4; writetmpczmm[3] = writetmpczmm[3]>>4; writeczmm[1] = writetmpczmm[2]+writetmpczmm[3]; writeczmm[2] = 0x00; writecardtype[0] = atoi(cxTextEdit13->Text.t_str()); if(LaunchWaterNewCard)//LaunchNewCard) { /* writestatus = LaunchNewCard(writereadcomno, writekeymode, writesecnum, writekey, writekh, writebalance, writedwmm, writesynum, writedaytime, writecardtype, writeczmm, writemode, writeDelayms); */ writestatus = LaunchWaterNewCard(writereadcomno, writekeymode, writesecnum, writekey, writekh, writebalance, writedwmm, writedaytime, writecardtype, writemode, writeDelayms); if(writestatus) { ShowMessage("写卡失败!"); ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = StrToInt(cxTextEdit18->Text); ADOQuery2->Post(); } else { String tmpsql; String tmpsql2 = "insert into CARD_F values(:BH,:KH,:BKH,:XM,:XB,";; //填写退卡表 tmpsql = "insert into CARD_T values(:BH,:KH,:BKH,:XM,:XB,"; tmpsql = tmpsql+":SFZH,:BM,:BZ,:ZB,:ZW,:JB,:RQ,:TKRQ,:YJ,:TYJ,"+ ":ZT,:GRMM,:BTBZ,:BT_YE,:BTYEDT,:BTSYCS,:SF_YE,"+ ":SFYEDT,:SYCS,:FKSK,:SF_FL,:GLF,:FKJE,:TKJE,:TKBT,"+ ":SF_KL,:USERNAME,:YW,:TKCB,:BKCB,:TKOperator)"; tmpsql2 = tmpsql2 + ":SFZH,:BM,:BZ,:ZB,:ZW,:JB,:RQ,:TKRQ,:YJ,:TYJ,"+ ":ZT,:GRMM,:BTBZ,:BT_YE,:BTYEDT,:BTSYCS,:SF_YE,"+ ":SFYEDT,:SYCS,:FKSK,:SF_FL,:GLF,:FKJE,:TKJE,:TKBT,"+ ":SF_KL,:USERNAME)"; ADOQuery3->Close(); ADOQuery3->SQL->Clear(); ADOQuery3->SQL->Add(tmpsql); ADOQuery2->Close(); ADOQuery2->SQL->Clear(); String stmpsql = "select * from CARD where BH='" + cxTextEdit5->Text + "'"; ADOQuery2->SQL->Add(stmpsql); ADOQuery2->Open(); if(!ADOQuery2->IsEmpty()) { //补发卡不计退卡记录 ADOQuery3->Parameters->ParamByName("BH")->Value = ADOQuery2->FieldByName("BH")->Value; ADOQuery3->Parameters->ParamByName("KH")->Value = ADOQuery2->FieldByName("KH")->Value; ADOQuery3->Parameters->ParamByName("BKH")->Value = ADOQuery2->FieldByName("BKH")->Value; ADOQuery3->Parameters->ParamByName("XM")->Value = ADOQuery2->FieldByName("XM")->Value; ADOQuery3->Parameters->ParamByName("XB")->Value = ADOQuery2->FieldByName("XB")->Value; ADOQuery3->Parameters->ParamByName("SFZH")->Value = ADOQuery2->FieldByName("SFZH")->Value; ADOQuery3->Parameters->ParamByName("BM")->Value = ADOQuery2->FieldByName("BM")->Value; ADOQuery3->Parameters->ParamByName("BZ")->Value = ADOQuery2->FieldByName("BZ")->Value; ADOQuery3->Parameters->ParamByName("ZB")->Value = ADOQuery2->FieldByName("ZB")->Value; ADOQuery3->Parameters->ParamByName("ZW")->Value = ADOQuery2->FieldByName("ZW")->Value; ADOQuery3->Parameters->ParamByName("JB")->Value = ADOQuery2->FieldByName("JB")->Value; ADOQuery3->Parameters->ParamByName("RQ")->Value = ADOQuery2->FieldByName("RQ")->Value; ADOQuery3->Parameters->ParamByName("TKRQ")->Value = DateTimeToStr(Now()); ADOQuery3->Parameters->ParamByName("YJ")->Value = ADOQuery2->FieldByName("YJ")->Value; ADOQuery3->Parameters->ParamByName("TYJ")->Value = ADOQuery2->FieldByName("TYJ")->Value; ADOQuery3->Parameters->ParamByName("ZT")->Value = "挂补";//ADOQuery2->FieldByName("ZT")->Value; ADOQuery3->Parameters->ParamByName("GRMM")->Value = ADOQuery2->FieldByName("GRMM")->Value; ADOQuery3->Parameters->ParamByName("BTBZ")->Value = ADOQuery2->FieldByName("BTBZ")->Value; ADOQuery3->Parameters->ParamByName("BT_YE")->Value = ADOQuery2->FieldByName("BT_YE")->Value; ADOQuery3->Parameters->ParamByName("BTYEDT")->Value = ADOQuery2->FieldByName("BTYEDT")->Value; ADOQuery3->Parameters->ParamByName("BTSYCS")->Value = ADOQuery2->FieldByName("BTSYCS")->Value; ADOQuery3->Parameters->ParamByName("SF_YE")->Value = ADOQuery2->FieldByName("SF_YE")->Value; ADOQuery3->Parameters->ParamByName("SFYEDT")->Value = ADOQuery2->FieldByName("SFYEDT")->Value; ADOQuery3->Parameters->ParamByName("SYCS")->Value = ADOQuery2->FieldByName("SYCS")->Value; ADOQuery3->Parameters->ParamByName("FKSK")->Value = ADOQuery2->FieldByName("FKSK")->Value; ADOQuery3->Parameters->ParamByName("SF_FL")->Value = ADOQuery2->FieldByName("SF_FL")->Value; ADOQuery3->Parameters->ParamByName("GLF")->Value = ADOQuery2->FieldByName("GLF")->Value; ADOQuery3->Parameters->ParamByName("FKJE")->Value = ADOQuery2->FieldByName("FKJE")->Value; ADOQuery3->Parameters->ParamByName("TKJE")->Value = 0;//ADOQuery2->FieldByName("TKJE")->Value; ADOQuery3->Parameters->ParamByName("TKBT")->Value = 0;//ADOQuery2->FieldByName("TKBT")->Value; ADOQuery3->Parameters->ParamByName("SF_KL")->Value = ADOQuery2->FieldByName("SF_KL")->Value; ADOQuery3->Parameters->ParamByName("USERNAME")->Value = ADOQuery2->FieldByName("USERNAME")->Value; ADOQuery3->Parameters->ParamByName("YW")->Value = 0; ADOQuery3->Parameters->ParamByName("TKCB")->Value = 0; ADOQuery3->Parameters->ParamByName("BKCB")->Value = StrToInt(cxTextEdit20->Text); ADOQuery3->Parameters->ParamByName("TKOperator")->Value = OperatorName; ADOQuery3->ExecSQL(); ADOQuery3->Close(); } //Wallet修改大钱包数据 ADOQuery2->Close(); ADOQuery2->SQL->Clear(); tmpsql = "select * from CARD where BH='" + cxTextEdit5->Text + "'"; ADOQuery2->SQL->Add(tmpsql); ADOQuery2->Open(); if(!ADOQuery2->IsEmpty()) { ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = StrToInt(cxTextEdit18->Text); ADOQuery2->Post(); } //CARD ADOQuery2->Close(); ADOQuery2->SQL->Clear(); tmpsql = "select * from CARD where BH='" + cxTextEdit5->Text + "'"; ADOQuery2->SQL->Add(tmpsql); ADOQuery2->Open(); ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = atoi(cxTextEdit18->Text.t_str()); ADOQuery2->FieldByName("ZT")->AsString = "发卡"; ADOQuery2->Post(); //CARD_F ADOQuery2->Close(); ADOQuery2->SQL->Clear(); tmpsql = "select * from CARD_F where BH='" + cxTextEdit5->Text + "'"; ADOQuery2->SQL->Add(tmpsql); ADOQuery2->Open(); ADOQuery3->SQL->Clear(); ADOQuery3->SQL->Add(tmpsql2); ADOQuery3->Parameters->ParamByName("BH")->Value = ADOQuery2->FieldByName("BH")->Value; ADOQuery3->Parameters->ParamByName("KH")->Value = ADOQuery2->FieldByName("KH")->Value; ADOQuery3->Parameters->ParamByName("BKH")->Value = ADOQuery2->FieldByName("BKH")->Value; ADOQuery3->Parameters->ParamByName("XM")->Value = ADOQuery2->FieldByName("XM")->Value; ADOQuery3->Parameters->ParamByName("XB")->Value = ADOQuery2->FieldByName("XB")->Value; ADOQuery3->Parameters->ParamByName("SFZH")->Value = ADOQuery2->FieldByName("SFZH")->Value; ADOQuery3->Parameters->ParamByName("BM")->Value = ADOQuery2->FieldByName("BM")->Value; ADOQuery3->Parameters->ParamByName("BZ")->Value = ADOQuery2->FieldByName("BZ")->Value; ADOQuery3->Parameters->ParamByName("ZB")->Value = ADOQuery2->FieldByName("ZB")->Value; ADOQuery3->Parameters->ParamByName("ZW")->Value = ADOQuery2->FieldByName("ZW")->Value; ADOQuery3->Parameters->ParamByName("JB")->Value = ADOQuery2->FieldByName("JB")->Value; ADOQuery3->Parameters->ParamByName("RQ")->Value = ADOQuery2->FieldByName("RQ")->Value; ADOQuery3->Parameters->ParamByName("TKRQ")->Value = DateTimeToStr(Now()); ADOQuery3->Parameters->ParamByName("YJ")->Value = ADOQuery2->FieldByName("YJ")->Value; ADOQuery3->Parameters->ParamByName("TYJ")->Value = ADOQuery2->FieldByName("TYJ")->Value; ADOQuery3->Parameters->ParamByName("ZT")->Value = ADOQuery2->FieldByName("ZT")->Value; ADOQuery3->Parameters->ParamByName("GRMM")->Value = ADOQuery2->FieldByName("GRMM")->Value; ADOQuery3->Parameters->ParamByName("BTBZ")->Value = ADOQuery2->FieldByName("BTBZ")->Value; ADOQuery3->Parameters->ParamByName("BT_YE")->Value = ADOQuery2->FieldByName("BT_YE")->Value; ADOQuery3->Parameters->ParamByName("BTYEDT")->Value = ADOQuery2->FieldByName("BTYEDT")->Value; ADOQuery3->Parameters->ParamByName("BTSYCS")->Value = ADOQuery2->FieldByName("BTSYCS")->Value; ADOQuery3->Parameters->ParamByName("SF_YE")->Value = ADOQuery2->FieldByName("SF_YE")->Value; ADOQuery3->Parameters->ParamByName("SFYEDT")->Value = ADOQuery2->FieldByName("SFYEDT")->Value; ADOQuery3->Parameters->ParamByName("SYCS")->Value = ADOQuery2->FieldByName("SYCS")->Value; ADOQuery3->Parameters->ParamByName("FKSK")->Value = ADOQuery2->FieldByName("FKSK")->Value; ADOQuery3->Parameters->ParamByName("SF_FL")->Value = ADOQuery2->FieldByName("SF_FL")->Value; ADOQuery3->Parameters->ParamByName("GLF")->Value = ADOQuery2->FieldByName("GLF")->Value; ADOQuery3->Parameters->ParamByName("FKJE")->Value = ADOQuery2->FieldByName("FKJE")->Value; ADOQuery3->Parameters->ParamByName("TKJE")->Value = ADOQuery2->FieldByName("TKJE")->Value; ADOQuery3->Parameters->ParamByName("TKBT")->Value = ADOQuery2->FieldByName("TKBT")->Value; ADOQuery3->Parameters->ParamByName("SF_KL")->Value = ADOQuery2->FieldByName("SF_KL")->Value; ADOQuery3->Parameters->ParamByName("USERNAME")->Value = ADOQuery2->FieldByName("USERNAME")->Value; ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = atoi(cxTextEdit18->Text.t_str()); ADOQuery2->FieldByName("ZT")->AsString = "发卡"; ADOQuery2->Post(); ADOQuery3->ExecSQL(); ADOQuery3->Close(); //KZT ADOQuery2->Close(); ADOQuery2->SQL->Clear(); tmpsql = "select * from KZT where BH='" + cxTextEdit5->Text + "'"; ADOQuery2->SQL->Add(tmpsql); ADOQuery2->Open(); ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = atoi(cxTextEdit18->Text.t_str()); ADOQuery2->FieldByName("GS")->AsInteger = 0; ADOQuery2->FieldByName("SY")->AsString = "Y"; ADOQuery2->FieldByName("FKRQ")->AsString = DateTimeToStr(Now()); ADOQuery2->Post(); ADOQuery2->Close(); ADOQuery2->SQL->Clear(); tmpsql = "select * from KZT where KH=-1"; ADOQuery2->SQL->Add(tmpsql); ADOQuery2->Open(); ADOQuery2->Edit(); ADOQuery2->FieldByName("KH")->AsInteger = StrToInt(cxTextEdit14->Text); ADOQuery2->FieldByName("GS")->AsInteger = 1; ADOQuery2->Post(); //填写操作记录表 ADOQuery2->Close(); ADOQuery2->SQL->Clear(); tmpsql = "insert into OperationList values(:BH,:KH,:JE,:YE,:LX,:Operator,:DateTime)"; ADOQuery2->SQL->Add(tmpsql); ADOQuery2->Parameters->ParamByName("BH")->Value = cxTextEdit5->Text; ADOQuery2->Parameters->ParamByName("KH")->Value = atoi(cxTextEdit18->Text.t_str()); ADOQuery2->Parameters->ParamByName("JE")->Value = 0; ADOQuery2->Parameters->ParamByName("YE")->Value = StrToFloat(cxTextEdit17->Text);; ADOQuery2->Parameters->ParamByName("LX")->Value = "补发卡"; ADOQuery2->Parameters->ParamByName("Operator")->Value = OperatorName; ADOQuery2->Parameters->ParamByName("DateTime")->Value = DateTimeToStr(Now()); ADOQuery2->ExecSQL(); ADOQuery2->Close(); //补发卡明细 /* ADOQuery2->Close(); ADOQuery2->SQL->Clear(); tmpsql = "insert into BFKMX values(:BH,:KH,:BKH,:JE,:YE,:LX,:Operator,:DateTime)"; ADOQuery2->SQL->Add(tmpsql); ADOQuery2->Parameters->ParamByName("BH")->Value = cxTextEdit5->Text; ADOQuery2->Parameters->ParamByName("KH")->Value = atoi(cxTextEdit14->Text.t_str()); ADOQuery2->Parameters->ParamByName("KH")->Value = atoi(cxTextEdit18->Text.t_str()); ADOQuery2->Parameters->ParamByName("JE")->Value = 0; ADOQuery2->Parameters->ParamByName("YE")->Value = StrToFloat(cxTextEdit17->Text);; ADOQuery2->Parameters->ParamByName("LX")->Value = "补发卡"; ADOQuery2->Parameters->ParamByName("Operator")->Value = OperatorName; ADOQuery2->Parameters->ParamByName("DateTime")->Value = DateTimeToStr(Now()); ADOQuery2->ExecSQL(); ADOQuery2->Close(); */ //MX ADOQuery2->Close(); ADOQuery2->SQL->Clear(); tmpsql = "insert into MX values(:BH,:KH,:SF_YE,"; tmpsql = tmpsql + ":SFJE,:SYCS,:SFRQ,:JYNO,"; tmpsql = tmpsql + ":GZZID,:SFLX,:CZY,:SCRQ)"; ADOQuery2->SQL->Add(tmpsql); ADOQuery2->Parameters->ParamByName("BH")->Value = cxTextEdit5->Text; ADOQuery2->Parameters->ParamByName("KH")->Value = atoi(cxTextEdit18->Text.t_str()); ADOQuery2->Parameters->ParamByName("SF_YE")->Value = StrToFloat(cxTextEdit17->Text); ADOQuery2->Parameters->ParamByName("SFJE")->Value = 0;//atoi(cxTextEdit20->Text.t_str()); ADOQuery2->Parameters->ParamByName("SYCS")->Value = 0; ADOQuery2->Parameters->ParamByName("SFRQ")->Value = DateTimeToStr(Now()); ADOQuery2->Parameters->ParamByName("JYNO")->Value = 0; ADOQuery2->Parameters->ParamByName("GZZID")->Value = 1; ADOQuery2->Parameters->ParamByName("SFLX")->Value = "F"; ADOQuery2->Parameters->ParamByName("CZY")->Value = OperatorName; ADOQuery2->Parameters->ParamByName("SCRQ")->Value = DateTimeToStr(Now()); ADOQuery2->ExecSQL(); ADOQuery2->Close(); int bkf = 0; if(!cxTextEdit20->Text.IsEmpty()) bkf = StrToInt(cxTextEdit20->Text); //补卡费 ADOQuery2->Close(); ADOQuery2->SQL->Clear(); tmpsql = "insert into MX values(:BH,:KH,:SF_YE,"; tmpsql = tmpsql + ":SFJE,:SYCS,:SFRQ,:JYNO,"; tmpsql = tmpsql + ":GZZID,:SFLX,:CZY,:SCRQ)"; ADOQuery2->SQL->Add(tmpsql); ADOQuery2->Parameters->ParamByName("BH")->Value = cxTextEdit5->Text; ADOQuery2->Parameters->ParamByName("KH")->Value = atoi(cxTextEdit18->Text.t_str()); ADOQuery2->Parameters->ParamByName("SF_YE")->Value = 0; ADOQuery2->Parameters->ParamByName("SFJE")->Value = bkf; ADOQuery2->Parameters->ParamByName("SYCS")->Value = 0; ADOQuery2->Parameters->ParamByName("SFRQ")->Value = DateTimeToStr(Now()); ADOQuery2->Parameters->ParamByName("JYNO")->Value = 0; ADOQuery2->Parameters->ParamByName("GZZID")->Value = 1; ADOQuery2->Parameters->ParamByName("SFLX")->Value = "G"; ADOQuery2->Parameters->ParamByName("CZY")->Value = OperatorName; ADOQuery2->Parameters->ParamByName("SCRQ")->Value = DateTimeToStr(Now()); ADOQuery2->ExecSQL(); ADOQuery2->Close(); //MXBAK /* ADOQuery2->SQL->Clear(); tmpsql = "insert into MXBAK values(:BH,:KH,:SF_YE,"; tmpsql = tmpsql + ":SFJE,:SYCS,:SFRQ,:JYNO,"; tmpsql = tmpsql + ":GZZID,:SFLX,:CZY,:SCRQ)"; ADOQuery2->SQL->Add(tmpsql); ADOQuery2->Parameters->ParamByName("BH")->Value = cxTextEdit5->Text; ADOQuery2->Parameters->ParamByName("KH")->Value = atoi(cxTextEdit18->Text.t_str()); ADOQuery2->Parameters->ParamByName("SF_YE")->Value = StrToFloat(cxTextEdit17->Text.t_str()); ADOQuery2->Parameters->ParamByName("SFJE")->Value = 0;//atoi(cxTextEdit20->Text.t_str()); ADOQuery2->Parameters->ParamByName("SYCS")->Value = 0; ADOQuery2->Parameters->ParamByName("SFRQ")->Value = DateTimeToStr(Now()); ADOQuery2->Parameters->ParamByName("JYNO")->Value = 0; ADOQuery2->Parameters->ParamByName("GZZID")->Value = 1; ADOQuery2->Parameters->ParamByName("SFLX")->Value = "F"; ADOQuery2->Parameters->ParamByName("CZY")->Value = OperatorName; ADOQuery2->Parameters->ParamByName("SCRQ")->Value = DateTimeToStr(Now()); ADOQuery2->ExecSQL(); ADOQuery2->Close(); ADOQuery2->SQL->Clear(); tmpsql = "insert into MXBAK values(:BH,:KH,:SF_YE,"; tmpsql = tmpsql + ":SFJE,:SYCS,:SFRQ,:JYNO,"; tmpsql = tmpsql + ":GZZID,:SFLX,:CZY,:SCRQ)"; ADOQuery2->SQL->Add(tmpsql); ADOQuery2->Parameters->ParamByName("BH")->Value = cxTextEdit5->Text; ADOQuery2->Parameters->ParamByName("KH")->Value = atoi(cxTextEdit18->Text.t_str()); ADOQuery2->Parameters->ParamByName("SF_YE")->Value = 0; ADOQuery2->Parameters->ParamByName("SFJE")->Value = atoi(cxTextEdit20->Text.t_str()); ADOQuery2->Parameters->ParamByName("SYCS")->Value = 0; ADOQuery2->Parameters->ParamByName("SFRQ")->Value = DateTimeToStr(Now()); ADOQuery2->Parameters->ParamByName("JYNO")->Value = 0; ADOQuery2->Parameters->ParamByName("GZZID")->Value = 1; ADOQuery2->Parameters->ParamByName("SFLX")->Value = "G"; ADOQuery2->Parameters->ParamByName("CZY")->Value = OperatorName; ADOQuery2->Parameters->ParamByName("SCRQ")->Value = DateTimeToStr(Now()); ADOQuery2->ExecSQL(); ADOQuery2->Close(); */ beepofreaddll(readcomno, '10'); ShowMessage("挂失补发新卡成功!"); ADOQuery1->Close(); InDatabaseADOQuery->Close(); // this->Close(); } } } } } }
int AuthClientUser::ClientProcessThread(SingleThread * self) { CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); int timeout = SOCKET_TIMEOUT; setsockopt(m_ClientSocket, SOL_SOCKET, SO_RCVTIMEO,(char*)&timeout, sizeof(timeout)); vector<BYTE> output; //1. Auth if(!this->SocketReadBuff(sizeof(tagCClientAuth), &output)) { SocketReadError("tagCClientAuth SocketReadBuff Error"); return -1; } tagCClientAuth *clietAuth = (tagCClientAuth *)&output[0]; clietAuth->UserName[sizeof(clietAuth->UserName)-1] = '\0'; m_UserName = clietAuth->UserName; m_UserName = m_UserName.LowerCase(); m_UserName = m_UserName.Trim(); string input_username = clietAuth->UserName; SendLogMessage(FormatStr(GBText("用户[%s]开始验证..."), m_UserName)); m_Build = clietAuth->Build; BigNumber A, s, B, K, M2; A.SetBinary(clietAuth->A, sizeof(clietAuth->A)); m_IsChargeProcess = clietAuth->IsChargeProcess; if(!m_SRP6Server.CalcKey(input_username, input_username, A, &s, &B, &K)) { SendLogMessage("错误(1)"); SocketReadError("CalcKey Error"); return -1; } tagSClientAuth sendAuth; memcpy(sendAuth.s, s.AsByteArray(), sizeof(sendAuth.s)); memcpy(sendAuth.B, B.AsByteArray(), sizeof(sendAuth.B)); if(!this->SendAuthMessage((BYTE *)&sendAuth, sizeof(sendAuth))) { SocketReadError("tagSClientAuth SocketSend Error"); return -1; } //2. Auth Check if(!this->SocketReadBuff(sizeof(tagCAuthCheck), &output)) { SocketReadError("tagCAuthCheck SocketReadBuff Error"); return -1; } tagCAuthCheck *clientAuthCheck = (tagCAuthCheck *)&output[0]; if(!m_SRP6Server.CheckClientAuth(input_username, clientAuthCheck->M, &M2)) { SendLogMessage("错误(2)"); SocketReadError("Auth Check Error"); return -1; } tagSAuthCheck sendAuthCheck; memcpy(sendAuthCheck.M2, M2.AsByteArray(), sizeof(sendAuthCheck.M2)); if(!this->SendAuthMessage((BYTE *)&sendAuthCheck, sizeof(sendAuthCheck))) { SocketReadError("tagSAuthCheck SocketSend Error"); return -1; } m_AuthCrypt.Init(&K, WOWWGUserServerEncryptionKey, WOWWGUserServerDecryptionKey); vector<String> outputMsg; if(!CheckUserCanLogin(&outputMsg)) { for(DWORD i=0; i<outputMsg.size(); i++) { SendLogMessage(outputMsg[i]); } SocketReadError(FormatStr("[RefuseLogin]:%s", m_RefuseLoginReason)); return -1; } for(DWORD i=0; i<outputMsg.size(); i++) { SendLogMessage(outputMsg[i]); } // SendLogMessage(FormatStr(GBText("用户[%s]验证成功!"), m_UserName)); TDateTime expTime; if(m_IsChargeProcess) { //充值 BYTE len = 0; if(!this->SocketReadBYTE(&len)) { SendLogMessage("错误(17)"); SocketReadError("Charge CardNo Read Len Error"); return -1; } if(!this->SocketReadBuff(len, &output)) { SendLogMessage("错误(14)"); SocketReadError("Charge CardNo Read Error"); return -1; } AnsiString cardNo = AnsiString((char *)&output[0], len); cardNo = cardNo.Trim(); cardNo = cardNo.UpperCase(); outputMsg.clear(); if(!Charge(m_ADOQuery, m_UserName, cardNo, &outputMsg)) { for(DWORD i=0; i<outputMsg.size(); i++) { SendLogMessage(outputMsg[i]); } SocketReadError("Charge Fail!"); return -1; } for(DWORD i=0; i<outputMsg.size(); i++) { SendLogMessage(outputMsg[i]); } outputMsg.clear(); if(!GetExpireTime(m_ADOQuery, m_UserName, &outputMsg, &expTime)) { for(DWORD i=0; i<outputMsg.size(); i++) { SendLogMessage(outputMsg[i]); } SocketReadError("Charge GetExpireTime Fail!"); return -1; } for(DWORD i=0; i<outputMsg.size(); i++) { SendLogMessage(outputMsg[i]); } SendLogMessage(GBText("充值成功!")); } else { //验证 tagWOWAddrInfo addrInfo; if(!FindAddrInfo(m_Build, &addrInfo)) { SendLogMessage("错误(3)"); GetLog()->Error("No Build Msg. Build = %d", m_Build); SocketReadError("We Don't Have This Build!"); return -1; } outputMsg.clear(); if(!GetExpireTime(m_ADOQuery, m_UserName, &outputMsg, &expTime)) { for(DWORD i=0; i<outputMsg.size(); i++) { SendLogMessage(outputMsg[i]); } SocketReadError("GetExpireTime Fail!"); return -1; } for(DWORD i=0; i<outputMsg.size(); i++) { SendLogMessage(outputMsg[i]); } tagClientAddrInfo info; info.Address = addrInfo.Addr; info.Offset = addrInfo.Offset; info.ExpireTime = expTime; if(!this->SendAuthMessage((BYTE *)&info, sizeof(tagClientAddrInfo))) { SocketReadError("tagClientAddrInfo SocketSend Error"); return -1; } m_ADOQuery->SQL->Text = FormatStr("SELECT * FROM wow_msg where msg_key = '%s'", L"login"); if(OpenSQL(m_ADOQuery)) { if(m_ADOQuery->RecordCount) { m_ADOQuery->First(); String text = m_ADOQuery->FieldByName("msg")->AsString; SendLogMessage(text); } } SendLogMessage(GBText("验证成功!")); } SendLogMessage(GBText(FormatStr("你的帐号[%s]到期时间为:%s", m_UserName, DateTimeToStr(expTime)))); OnLoginSuccess(); Sleep(1000); this->SetIsClosed(1); return -1; }