示例#1
0
//---------------------------------------------------------------------------
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;
}
示例#4
0
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;
  }
}
示例#5
0
//---------------------------------------------------------------------------
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);
}
示例#6
0
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);
}
示例#7
0
//---------------------------------------------------------------------------
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);
}
示例#8
0
//---------------------------------------------------------------------------
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;
}
示例#10
0
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;
}
示例#11
0
//---------------------------------------------------------------------------
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文件
	}
}
示例#12
0
//----------
//日志操作
//----------
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);
}
示例#13
0
//---------------------------------------------------------------------------
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);
}
示例#14
0
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();
}
示例#15
0
//---------------------------------------------------------------------------
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;
示例#17
0
//---------------------------------------------------------------------------
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;
}
示例#18
0
文件: logU.cpp 项目: fduhia/Easy68k
//--------------------------------------------------------------------------
// 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);
  }
}
示例#19
0
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;
        }
	}
}
示例#20
0
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("写卡函数加载失败!");
				}
			}
		}
	}
}
示例#21
0
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;
	}
}
示例#22
0
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;
}
示例#23
0
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;
}
示例#24
0
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;
}
示例#25
0
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);
}
示例#26
0
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
				{
示例#27
0
//---------------------------------------------------------------------------
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);

}
示例#28
0
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);
}
示例#29
0
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();
						}
					}
				}
			}
		}
	}
示例#30
0
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;
}