//--------------------------------------------------------------------------- void __fastcall TFin3002::data_fimExit(TObject *Sender) { System::TDateTime dt_data_ini, dt_data_fim; String str_data_ini, str_data_fim; if (data_fim->Text.Length()) { if (!Validacoes::IsDate(data_fim->EditText)) { data_fim->SetFocus(); return; } } else { return; } if(data_ini->Text.Length() <= 0) { return; } try { str_data_ini = data_ini->EditText + " 00:00:00"; dt_data_ini = StrToDateTime(str_data_ini); str_data_fim = data_fim->EditText + " 23:59:59"; dt_data_fim = StrToDateTime(str_data_fim); } __finally {} if (dt_data_ini > dt_data_fim) { MessageBox(Handle, "A data final deve ser maior ou igual a data inicial!",Caption.c_str(),APP_ATENTION); data_fim->SetFocus(); return; } }
int check_fill() { Card.date_create = Form_Create->DateTimePicker_DateCreate->Date; if (Form_Create->Edit_Number->Text == "") { ShowMessage("Enter number value"); return 0; } else { Card.number = StrToInt(Form_Create->Edit_Number->Text); } Card.department_number = Form_Create->ComboBox_DepartmentNumber->ItemIndex+1; if (Form_Create->Edit_DirectoryNumber->Text == "") { ShowMessage("Enter directory number value"); return 0; } else { Card.directory_number = StrToInt(Form_Create->Edit_DirectoryNumber->Text); } /*<control>*/ if (Form_Create->Edit_ControlNumber->Enabled && Form_Create->DateTimePicker_ControlNumberData->Enabled) { Card.control_number = Form_Create->Edit_ControlNumber->Text; Card.control_number_data = Form_Create->DateTimePicker_ControlNumberData->Date; } else { Card.control_number = NULL; Card.control_number_data = NULL; } /*</control>*/ if (Form_Create->Memo_Description->Text == "") { ShowMessage("Enter description value"); return 0; } else { Card.description = Form_Create->Memo_Description->Text; } Card.address = Form_Create->Memo_Address->Text; Card.post_type = Form_Create->ComboBox_PostType->ItemIndex; if (Form_Create->Edit_NomenclatureDirectory->Text == "") { Card.nomenclature_directory = NULL; } else { Card.nomenclature_directory = StrToInt(Form_Create->Edit_NomenclatureDirectory->Text); } if (FormatDateTime("dd.mm.yyyy",StrToDateTime(Card.control_number_data)) > FormatDateTime("dd.mm.yyyy",StrToDateTime(Card.date_create))) { ShowMessage("Date control > date document"); return 0; } return 1; }
//--------------------------------------------------------------------------- void __fastcall THttpTestForm::HeadButtonClick(TObject *Sender) { int I; DisplayMemo->Clear(); DocumentMemo->Clear(); SetButtonState(FALSE); HttpCli1->URL = URLEdit->Text; HttpCli1->Proxy = ProxyHostEdit->Text; HttpCli1->ProxyPort = ProxyPortEdit->Text; HttpCli1->RcvdStream = NULL; if (DateTimeEdit->Text != "") HttpCli1->ModifiedSince = StrToDateTime(DateTimeEdit->Text); else HttpCli1->ModifiedSince = 0; try { HttpCli1->Head(); } __except (TRUE) { SetButtonState(TRUE); DisplayMemo->Lines->Add("HEAD Failed !"); DisplayMemo->Lines->Add("StatusCode = " + IntToStr(HttpCli1->StatusCode)); DisplayMemo->Lines->Add("ReasonPhrase = " + HttpCli1->ReasonPhrase); return; } DisplayMemo->Lines->Add("StatusCode = " + IntToStr(HttpCli1->StatusCode)); for (I = 0; I < HttpCli1->RcvdHeader->Count; I++) DisplayMemo->Lines->Add("hdr>" + HttpCli1->RcvdHeader->Strings[I]); SetButtonState(TRUE); }
//--------------------------------------------------------------------------- void __fastcall THttpTestForm::PrepareConnection(void) { AnsiString SocksLevelValues[3] = {"5", "4A", "4"}; if (SocksServerEdit->Text > "") { SslHttpCli1->SocksServer = SocksServerEdit->Text; SslHttpCli1->SocksPort = SocksPortEdit->Text; SslHttpCli1->SocksLevel = SocksLevelValues[SocksLevelComboBox->ItemIndex]; } else { SslHttpCli1->SocksServer = ""; SslHttpCli1->SocksPort = ""; SslHttpCli1->SocksLevel = "5"; } if (ProxyHostEdit->Text > "" ) { SslHttpCli1->Proxy = ProxyHostEdit->Text; SslHttpCli1->ProxyPort = ProxyPortEdit->Text; } else { SslHttpCli1->Proxy = ProxyHostEdit->Text; SslHttpCli1->ProxyPort = ProxyPortEdit->Text; } SslHttpCli1->URL = URLEdit->Text; SslHttpCli1->AcceptLanguage = "en, fr"; SslHttpCli1->Connection = "Keep-Alive"; SslHttpCli1->RequestVer = "1." + IntToStr(HttpVersionComboBox->ItemIndex); if (DateTimeEdit->Text != "") SslHttpCli1->ModifiedSince = StrToDateTime(DateTimeEdit->Text); else SslHttpCli1->ModifiedSince = 0; //SslHttpCli1.SetAcceptableHostsList(AcceptableHostsEdit.Text); SslContext1->SslCertFile = CertFileEdit->Text; SslContext1->SslPassPhrase = PassPhraseEdit->Text; SslContext1->SslPrivKeyFile = PrivKeyFileEdit->Text; SslContext1->SslCAFile = CAFileEdit->Text; SslContext1->SslCAPath = CAPathEdit->Text; SslContext1->SslVerifyPeer = VerifyPeerCheckBox->Checked; SslContext1->SslVersionMethod = sslV23_CLIENT; IcsLogger1->LogOptions = TLogOptions(); if (DebugEventCheckBox->Checked ) IcsLogger1->LogOptions = IcsLogger1->LogOptions << loDestEvent; if (DebugOutputCheckBox->Checked ) IcsLogger1->LogOptions = IcsLogger1->LogOptions << loDestOutDebug; if (DebugFileCheckBox->Checked ) { IcsLogger1->LogFileName = "Debug_Out_HttpsTst.txt"; IcsLogger1->LogFileOption = lfoOverwrite; IcsLogger1->LogOptions = IcsLogger1->LogOptions << loDestFile; } if (IcsLogger1->LogOptions != TLogOptions()) IcsLogger1->LogOptions = (IcsLogger1->LogOptions + LogAllOptInfo) << loAddStamp; }
void __fastcall TfrmOpenFTPDialog::lvFilesCompare(TObject *Sender, TListItem *Item1, TListItem *Item2, int Data, int &Compare) { Compare = 0; switch(lvFiles->HeaderSortColumn) { case 0: //按文件名 Compare = StrComp(Item1->Caption.c_str(),Item2->Caption.c_str()); break; case 1: //按大小 if((int)Item1->Data > (int)Item2->Data) Compare = 1; else if((int)Item1->Data < (int)Item2->Data) Compare = -1; //if(Compare == 0) // Compare = StrComp(Item1->SubItems->Strings[2].c_str(),Item2->SubItems->Strings[2].c_str()); break; case 2: //按类型 Compare = StrComp(Item1->SubItems->Strings[1].c_str(),Item2->SubItems->Strings[1].c_str()); break; case 3: //按修改日期 { TDateTime D1,D2; D1 = StrToDateTime(Item1->SubItems->Strings[2]); D2 = StrToDateTime(Item2->SubItems->Strings[2]); if(D1 > D2) Compare = 1; else if(D1 < D2) Compare = -1; } break; case 4: //按类型 Compare = StrComp(Item1->SubItems->Strings[3].c_str(),Item2->SubItems->Strings[3].c_str()); break; } if(lvFiles->HeaderSortDirection == sdAscending) Compare = Compare * -1; }
//--------------------------------------------------------------------------- void __fastcall THttpTestForm::GetButtonClick(TObject *Sender) { int I; TStream *DataIn; DisplayMemo->Clear(); DocumentMemo->Clear(); SetButtonState(FALSE); HttpCli1->URL = URLEdit->Text; HttpCli1->Proxy = ProxyHostEdit->Text; HttpCli1->ProxyPort = ProxyPortEdit->Text; HttpCli1->RcvdStream = NULL; if (DateTimeEdit->Text != "") HttpCli1->ModifiedSince = StrToDateTime(DateTimeEdit->Text); else HttpCli1->ModifiedSince = 0; try { HttpCli1->Get(); } __except (TRUE) { SetButtonState(TRUE); DisplayMemo->Lines->Add("GET Failed !"); DisplayMemo->Lines->Add("StatusCode = " + IntToStr(HttpCli1->StatusCode)); DisplayMemo->Lines->Add("ReasonPhrase = " + HttpCli1->ReasonPhrase); HttpCli1DocEnd(NULL); return; } DisplayMemo->Lines->Add("StatusCode = " + IntToStr(HttpCli1->StatusCode)); for (I = 0; I < HttpCli1->RcvdHeader->Count; I++) DisplayMemo->Lines->Add("hdr>" + HttpCli1->RcvdHeader->Strings[I]); DataIn = new TFileStream(HttpCli1->DocName, fmOpenRead); DocumentMemo->Lines->LoadFromStream(DataIn); delete DataIn; SetButtonState(TRUE); }
void __fastcall TfrmSearch::menuEditParameterClick(TObject *Sender) { TListItem * Item = lvParams->Selected; if(Item == NULL) return; TBillField * Field = (TBillField *)Item->Data; frmEditSearchParam->SetSelectedFieldIndex((TBillField * )Item->Data); frmEditSearchParam->cbxOperator->ItemIndex = frmEditSearchParam->cbxOperator->Items->IndexOf(Item->SubItems->Strings[1]); frmEditSearchParam->txtContext->Text = ""; frmEditSearchParam->cbxValues->Text = ""; if(Field->SortType == SORT_AS_DATETIME) { if(Item->SubItems->Strings[2] == "") frmEditSearchParam->dtDate->DateTime = StrToDateTime(FormatDateTime("yyyy-mm-dd",Now()) + " 00:00:00"); else frmEditSearchParam->dtDate->DateTime = StrToDateTime(Item->SubItems->Strings[2]); frmEditSearchParam->dtTime->DateTime = frmEditSearchParam->dtDate->DateTime; } //else if(frmEditSearchParam->cbxValues->Items->Count > 0) frmEditSearchParam->cbxValues->Text = Item->SubItems->Strings[2]; //else frmEditSearchParam->txtContext->Text = Item->SubItems->Strings[2]; frmEditSearchParam->cbxMatch->Checked = Item->SubItems->Strings[3] == "√"; if(frmEditSearchParam->ShowModal() == mrOk) { TBillField * Field = (TBillField * )frmEditSearchParam->cbxField->Items->Objects[frmEditSearchParam->cbxField->ItemIndex]; Item->Data = (void *)Field; Item->SubItems->Strings[0] = Field->Label; Item->SubItems->Strings[1] = frmEditSearchParam->cbxOperator->Text; //Item->SubItems->Strings[2] = frmEditSearchParam->cbxAndOr->Text; if(frmEditSearchParam->txtContext->Visible) Item->SubItems->Strings[2] = frmEditSearchParam->txtContext->Text; else if(frmEditSearchParam->cbxValues->Visible) Item->SubItems->Strings[2] = frmEditSearchParam->cbxValues->Text; else Item->SubItems->Strings[2] = FormatDateTime("yyyy-mm-dd",frmEditSearchParam->dtDate->DateTime) + " " + FormatDateTime("hh:nn:ss",frmEditSearchParam->dtTime->DateTime); if(frmEditSearchParam->cbxMatch->Checked) Item->SubItems->Strings[3] = "√"; else Item->SubItems->Strings[3] = ""; } /* if(frmEditSearchParam->cbxOperator->ItemIndex < 0) frmEditSearchParam->cbxOperator->ItemIndex = 0; TBillField * BillField = (TBillField * )Item->Data; if(BillField->ValueTransList != NULL && BillField->ValueTransList->Count > 0) { frmEditSearchParam->cbxValues->Items->Clear(); frmEditSearchParam->cbxValues->Items->Assign(BillField->ValueTransList); frmEditSearchParam->cbxValues->Text = Item->SubItems->Strings[2]; frmEditSearchParam->cbxValues->Visible = true; frmEditSearchParam->txtContext->Visible = false; } else { frmEditSearchParam->txtContext->Text = Item->SubItems->Strings[2]; frmEditSearchParam->cbxValues->Visible = false; frmEditSearchParam->txtContext->Visible = true; } if(BillField->SortType == SORT_AS_DATETIME) { frmEditSearchParam->cbxValues->Visible = false; frmEditSearchParam->txtContext->Visible = false; frmEditSearchParam->dtDate->Visible = true; frmEditSearchParam->dtTime->Visible = true; if(Item->SubItems->Strings[2] == "") frmEditSearchParam->dtDate->DateTime = StrToDateTime(FormatDateTime("yyyy-mm-dd",Now()) + " 00:00:00"); else frmEditSearchParam->dtDate->DateTime = StrToDateTime(Item->SubItems->Strings[2]); frmEditSearchParam->dtTime->DateTime = frmEditSearchParam->dtDate->DateTime; } else { frmEditSearchParam->dtDate->Visible = false; frmEditSearchParam->dtTime->Visible = false; } frmEditSearchParam->cbxMatch->Checked = Item->SubItems->Strings[3] == "是"; if(frmEditSearchParam->ShowModal() == mrOk) { Item->SubItems->Strings[1] = frmEditSearchParam->cbxOperator->Text; if(frmEditSearchParam->txtContext->Visible) Item->SubItems->Strings[2] = frmEditSearchParam->txtContext->Text; else if(frmEditSearchParam->cbxValues->Visible) Item->SubItems->Strings[2] = frmEditSearchParam->cbxValues->Text; else Item->SubItems->Strings[2] = FormatDateTime("yyyy-mm-dd",frmEditSearchParam->dtDate->DateTime) + " " + FormatDateTime("hh:nn:ss",frmEditSearchParam->dtTime->DateTime); if(frmEditSearchParam->cbxMatch->Checked) Item->SubItems->Strings[3] = "是"; else Item->SubItems->Strings[3] = "否"; }*/ }
//--------------------------------------------------------------------------- void __fastcall TFin3002::btRelatorioClick(TObject *Sender) { String SQL; System::TDateTime dt_data_ini, dt_data_fim; String str_data_ini, str_data_fim; String str_situacao; dt_data_ini = dt_data_fim = 0; SQL = "SELECT * FROM cns_conta_pagar WHERE 1=1"; if (cod_fornecedor->Text.Length()) { SQL += " AND cod_fornecedor = " + QuotedStr(cod_fornecedor->Text); } if (cod_plano_conta_ini->Text.Length()) { SQL += " AND cod_plano_conta >= " + QuotedStr(cod_plano_conta_ini->Text); } if (cod_plano_conta_fim->Text.Length()) { SQL += " AND cod_plano_conta <= " + QuotedStr(cod_plano_conta_fim->Text); } if (cod_centro_custo_ini->Text.Length()) { SQL += " AND cod_centro_custo >= " + QuotedStr(cod_centro_custo_ini->Text); } if (cod_centro_custo_fim->Text.Length()) { SQL += " AND cod_centro_custo <= " + QuotedStr(cod_centro_custo_fim->Text); } if(data_ini->Text.Length()) { try { str_data_ini = data_ini->EditText + " 00:00:00"; dt_data_ini = StrToDateTime(str_data_ini); SQL += " AND data_cadastro >= :data_ini"; } __finally {} } if(data_fim->Text.Length()) { try { str_data_fim = data_fim->EditText + " 23:59:59"; dt_data_fim = StrToDateTime(str_data_fim); SQL += " AND data_cadastro <= :data_fim"; } __finally {} } //Verifica se foram selecionadas todas as situações if (!(ckPendente->Checked && ckAndamento->Checked && ckLiquidado->Checked && ckCancelado->Checked)) { str_situacao = ""; //Faz uma junção de cada situação. if (ckPendente->Checked) str_situacao += (str_situacao.Length())? ",'P'":"'P'"; if (ckAndamento->Checked) str_situacao += (str_situacao.Length())? ",'A'":"'A'"; if (ckLiquidado->Checked) str_situacao += (str_situacao.Length())? ",'L'":"'L'"; if (ckCancelado->Checked) str_situacao += (str_situacao.Length())? ",'C'":"'C'"; SQL += " AND ies_situacao IN (" + str_situacao + ")"; } switch (rbAgrupamento->ItemIndex) { case 0: SQL += " ORDER BY cod_fornecedor, cod_conta_pagar"; ConsultaPorFornecedor(SQL,dt_data_ini, dt_data_fim); break; case 1: SQL += " ORDER BY ord_situacao, cod_conta_pagar"; ConsultaPorSitacao(SQL,dt_data_ini, dt_data_fim); break; case 2: SQL += " ORDER BY cod_plano_conta, cod_conta_pagar"; ConsultaPorContaContabil(SQL,dt_data_ini, dt_data_fim); break; case 3: SQL += " ORDER BY cod_centro_custo, cod_conta_pagar"; ConsultaPorCentroCusto(SQL,dt_data_ini, dt_data_fim); break; default: SQL += " ORDER BY cod_fornecedor, cod_conta_pagar"; ConsultaPorFornecedor(SQL,dt_data_ini, dt_data_fim); } //Close(); }
bool FileFilterConfig(FileFilterParams *FF, bool ColorConfig) { const wchar_t VerticalLine[] = {BoxSymbols[BS_T_H1V1],BoxSymbols[BS_V1],BoxSymbols[BS_V1],BoxSymbols[BS_V1],BoxSymbols[BS_B_H1V1],0}; // Временная маска. CFileMask FileMask; // История для маски файлов const wchar_t FilterMasksHistoryName[] = L"FilterMasks"; // История для имени фильтра const wchar_t FilterNameHistoryName[] = L"FilterName"; // Маски для диалога настройки // Маска для ввода дней для относительной даты const wchar_t DaysMask[] = L"9999"; string strDateMask, strTimeMask; // Определение параметров даты и времени в системе. wchar_t DateSeparator=GetDateSeparator(); wchar_t TimeSeparator=GetTimeSeparator(); wchar_t DecimalSeparator=GetDecimalSeparator(); int DateFormat=GetDateFormat(); switch (DateFormat) { case 0: // Маска даты для форматов DD.MM.YYYYY и MM.DD.YYYYY strDateMask = FormatString() << L"99" << DateSeparator << "99" << DateSeparator << "9999N"; break; case 1: // Маска даты для форматов DD.MM.YYYYY и MM.DD.YYYYY strDateMask = FormatString() << L"99" << DateSeparator << "99" << DateSeparator << "9999N"; break; default: // Маска даты для формата YYYYY.MM.DD strDateMask = FormatString() << L"N9999" << DateSeparator << "c99" << DateSeparator << "c99"; break; } // Маска времени strTimeMask = FormatString() << L"99" << TimeSeparator << "99" << TimeSeparator << "99" << DecimalSeparator << "999"; FarDialogItem FilterDlgData[]= { {DI_DOUBLEBOX,3,1,76,20,0,nullptr,nullptr,DIF_SHOWAMPERSAND,MSG(MFileFilterTitle)}, {DI_TEXT,5,2,0,2,0,nullptr,nullptr,DIF_FOCUS,MSG(MFileFilterName)}, {DI_EDIT,5,2,74,2,0,FilterNameHistoryName,nullptr,DIF_HISTORY,L""}, {DI_TEXT,0,3,0,3,0,nullptr,nullptr,DIF_SEPARATOR,L""}, {DI_CHECKBOX,5,4,0,4,0,nullptr,nullptr,DIF_AUTOMATION,MSG(MFileFilterMatchMask)}, {DI_EDIT,5,4,74,4,0,FilterMasksHistoryName,nullptr,DIF_HISTORY,L""}, {DI_TEXT,0,5,0,5,0,nullptr,nullptr,DIF_SEPARATOR,L""}, {DI_CHECKBOX,5,6,0,6,0,nullptr,nullptr,DIF_AUTOMATION,MSG(MFileFilterSize)}, {DI_TEXT,7,7,8,7,0,nullptr,nullptr,0,MSG(MFileFilterSizeFromSign)}, {DI_EDIT,10,7,20,7,0,nullptr,nullptr,0,L""}, {DI_TEXT,7,8,8,8,0,nullptr,nullptr,0,MSG(MFileFilterSizeToSign)}, {DI_EDIT,10,8,20,8,0,nullptr,nullptr,0,L""}, {DI_CHECKBOX,24,6,0,6,0,nullptr,nullptr,DIF_AUTOMATION,MSG(MFileFilterDate)}, {DI_COMBOBOX,26,7,41,7,0,nullptr,nullptr,DIF_DROPDOWNLIST|DIF_LISTNOAMPERSAND,L""}, {DI_CHECKBOX,26,8,0,8,0,nullptr,nullptr,0,MSG(MFileFilterDateRelative)}, {DI_TEXT,48,7,50,7,0,nullptr,nullptr,0,MSG(MFileFilterDateBeforeSign)}, {DI_FIXEDIT,51,7,61,7,0,nullptr,strDateMask.CPtr(),DIF_MASKEDIT,L""}, {DI_FIXEDIT,51,7,61,7,0,nullptr,DaysMask,DIF_MASKEDIT,L""}, {DI_FIXEDIT,63,7,74,7,0,nullptr,strTimeMask.CPtr(),DIF_MASKEDIT,L""}, {DI_TEXT,48,8,50,8,0,nullptr,nullptr,0,MSG(MFileFilterDateAfterSign)}, {DI_FIXEDIT,51,8,61,8,0,nullptr,strDateMask.CPtr(),DIF_MASKEDIT,L""}, {DI_FIXEDIT,51,8,61,8,0,nullptr,DaysMask,DIF_MASKEDIT,L""}, {DI_FIXEDIT,63,8,74,8,0,nullptr,strTimeMask.CPtr(),DIF_MASKEDIT,L""}, {DI_BUTTON,0,6,0,6,0,nullptr,nullptr,DIF_BTNNOCLOSE,MSG(MFileFilterCurrent)}, {DI_BUTTON,0,6,74,6,0,nullptr,nullptr,DIF_BTNNOCLOSE,MSG(MFileFilterBlank)}, {DI_TEXT,0,9,0,9,0,nullptr,nullptr,DIF_SEPARATOR,L""}, {DI_VTEXT,22,5,22,9,0,nullptr,nullptr,DIF_BOXCOLOR,VerticalLine}, {DI_CHECKBOX, 5,10,0,10,0,nullptr,nullptr,DIF_AUTOMATION,MSG(MFileFilterAttr)}, {DI_CHECKBOX, 7,11,0,11,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrR)}, {DI_CHECKBOX, 7,12,0,12,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrA)}, {DI_CHECKBOX, 7,13,0,13,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrH)}, {DI_CHECKBOX, 7,14,0,14,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrS)}, {DI_CHECKBOX,29,11,0,11,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrD)}, {DI_CHECKBOX,29,12,0,12,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrC)}, {DI_CHECKBOX,29,13,0,13,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrE)}, {DI_CHECKBOX,29,14,0,14,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrNI)}, {DI_CHECKBOX,29,15,0,15,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrReparse)}, {DI_CHECKBOX,51,11,0,11,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrSparse)}, {DI_CHECKBOX,51,12,0,12,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrT)}, {DI_CHECKBOX,51,13,0,13,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrOffline)}, {DI_CHECKBOX,51,14,0,14,0,nullptr,nullptr,DIF_3STATE,MSG(MFileFilterAttrVirtual)}, {DI_TEXT,-1,14,0,14,0,nullptr,nullptr,DIF_SEPARATOR,MSG(MHighlightColors)}, {DI_TEXT,7,15,0,15,0,nullptr,nullptr,0,MSG(MHighlightMarkChar)}, {DI_FIXEDIT,5,15,5,15,0,nullptr,nullptr,0,L""}, {DI_CHECKBOX,0,15,0,15,0,nullptr,nullptr,0,MSG(MHighlightTransparentMarkChar)}, {DI_BUTTON,5,16,0,16,0,nullptr,nullptr,DIF_BTNNOCLOSE|DIF_NOBRACKETS,MSG(MHighlightFileName1)}, {DI_BUTTON,0,16,0,16,0,nullptr,nullptr,DIF_BTNNOCLOSE|DIF_NOBRACKETS,MSG(MHighlightMarking1)}, {DI_BUTTON,5,17,0,17,0,nullptr,nullptr,DIF_BTNNOCLOSE|DIF_NOBRACKETS,MSG(MHighlightFileName2)}, {DI_BUTTON,0,17,0,17,0,nullptr,nullptr,DIF_BTNNOCLOSE|DIF_NOBRACKETS,MSG(MHighlightMarking2)}, {DI_BUTTON,5,18,0,18,0,nullptr,nullptr,DIF_BTNNOCLOSE|DIF_NOBRACKETS,MSG(MHighlightFileName3)}, {DI_BUTTON,0,18,0,18,0,nullptr,nullptr,DIF_BTNNOCLOSE|DIF_NOBRACKETS,MSG(MHighlightMarking3)}, {DI_BUTTON,5,19,0,19,0,nullptr,nullptr,DIF_BTNNOCLOSE|DIF_NOBRACKETS,MSG(MHighlightFileName4)}, {DI_BUTTON,0,19,0,19,0,nullptr,nullptr,DIF_BTNNOCLOSE|DIF_NOBRACKETS,MSG(MHighlightMarking4)}, {DI_USERCONTROL,73-15-1,16,73-2,19,0,nullptr,nullptr,DIF_NOFOCUS,L""}, {DI_CHECKBOX,5,20,0,20,0,nullptr,nullptr,0,MSG(MHighlightContinueProcessing)}, {DI_TEXT,0,16,0,16,0,nullptr,nullptr,DIF_SEPARATOR,L""}, {DI_CHECKBOX,5,17,0,17,0,nullptr,nullptr,0,MSG(MFileHardLinksCount)},//добавляем новый чекбокс в панель {DI_TEXT,0,18,0,18,0,nullptr,nullptr,DIF_SEPARATOR,L""},// и разделитель {DI_BUTTON,0,19,0,19,0,nullptr,nullptr,DIF_DEFAULTBUTTON|DIF_CENTERGROUP,MSG(MOk)}, {DI_BUTTON,0,19,0,19,0,nullptr,nullptr,DIF_CENTERGROUP|DIF_BTNNOCLOSE,MSG(MFileFilterReset)}, {DI_BUTTON,0,19,0,19,0,nullptr,nullptr,DIF_CENTERGROUP,MSG(MFileFilterCancel)}, {DI_BUTTON,0,19,0,19,0,nullptr,nullptr,DIF_CENTERGROUP|DIF_BTNNOCLOSE,MSG(MFileFilterMakeTransparent)}, }; FilterDlgData[0].Data=MSG(ColorConfig?MFileHilightTitle:MFileFilterTitle); MakeDialogItemsEx(FilterDlgData,FilterDlg); if (ColorConfig) { FilterDlg[ID_FF_TITLE].Y2+=5; for (int i=ID_FF_NAME; i<=ID_FF_SEPARATOR1; i++) FilterDlg[i].Flags|=DIF_HIDDEN; for (int i=ID_FF_MATCHMASK; i<=ID_FF_VIRTUAL; i++) { FilterDlg[i].Y1-=2; FilterDlg[i].Y2-=2; } for (int i=ID_FF_SEPARATOR5; i<=ID_FF_MAKETRANSPARENT; i++) { FilterDlg[i].Y1+=5; FilterDlg[i].Y2+=5; } } else { for (int i=ID_HER_SEPARATOR1; i<=ID_HER_CONTINUEPROCESSING; i++) FilterDlg[i].Flags|=DIF_HIDDEN; FilterDlg[ID_FF_MAKETRANSPARENT].Flags=DIF_HIDDEN; } FilterDlg[ID_FF_NAMEEDIT].X1=FilterDlg[ID_FF_NAME].X1+(int)FilterDlg[ID_FF_NAME].strData.GetLength()-(FilterDlg[ID_FF_NAME].strData.Contains(L'&')?1:0)+1; FilterDlg[ID_FF_MASKEDIT].X1=FilterDlg[ID_FF_MATCHMASK].X1+(int)FilterDlg[ID_FF_MATCHMASK].strData.GetLength()-(FilterDlg[ID_FF_MATCHMASK].strData.Contains(L'&')?1:0)+5; FilterDlg[ID_FF_BLANK].X1=FilterDlg[ID_FF_BLANK].X2-(int)FilterDlg[ID_FF_BLANK].strData.GetLength()+(FilterDlg[ID_FF_BLANK].strData.Contains(L'&')?1:0)-3; FilterDlg[ID_FF_CURRENT].X2=FilterDlg[ID_FF_BLANK].X1-2; FilterDlg[ID_FF_CURRENT].X1=FilterDlg[ID_FF_CURRENT].X2-(int)FilterDlg[ID_FF_CURRENT].strData.GetLength()+(FilterDlg[ID_FF_CURRENT].strData.Contains(L'&')?1:0)-3; FilterDlg[ID_HER_MARKTRANSPARENT].X1=FilterDlg[ID_HER_MARK_TITLE].X1+(int)FilterDlg[ID_HER_MARK_TITLE].strData.GetLength()-(FilterDlg[ID_HER_MARK_TITLE].strData.Contains(L'&')?1:0)+1; for (int i=ID_HER_NORMALMARKING; i<=ID_HER_SELECTEDCURSORMARKING; i+=2) FilterDlg[i].X1=FilterDlg[ID_HER_NORMALFILE].X1+(int)FilterDlg[ID_HER_NORMALFILE].strData.GetLength()-(FilterDlg[ID_HER_NORMALFILE].strData.Contains(L'&')?1:0)+1; FAR_CHAR_INFO VBufColorExample[15*4]= {}; HighlightDataColor Colors; FF->GetColors(&Colors); HighlightDlgUpdateUserControl(VBufColorExample,Colors); FilterDlg[ID_HER_COLOREXAMPLE].VBuf=VBufColorExample; wchar_t MarkChar[] = {static_cast<wchar_t>(Colors.MarkChar), 0}; FilterDlg[ID_HER_MARKEDIT].strData=MarkChar; FilterDlg[ID_HER_MARKTRANSPARENT].Selected=(Colors.MarkChar&0xFF0000?1:0); FilterDlg[ID_HER_CONTINUEPROCESSING].Selected=(FF->GetContinueProcessing()?1:0); FilterDlg[ID_FF_NAMEEDIT].strData = FF->GetTitle(); const wchar_t *FMask; FilterDlg[ID_FF_MATCHMASK].Selected=FF->GetMask(&FMask)?1:0; FilterDlg[ID_FF_MASKEDIT].strData=FMask; if (!FilterDlg[ID_FF_MATCHMASK].Selected) FilterDlg[ID_FF_MASKEDIT].Flags|=DIF_DISABLE; const wchar_t *SizeAbove, *SizeBelow; FilterDlg[ID_FF_MATCHSIZE].Selected=FF->GetSize(&SizeAbove,&SizeBelow)?1:0; FilterDlg[ID_FF_SIZEFROMEDIT].strData=SizeAbove; FilterDlg[ID_FF_SIZETOEDIT].strData=SizeBelow; FilterDlg[ID_FF_HARDLINKS].Selected=FF->GetHardLinks(nullptr,nullptr)?1:0; //пока что мы проверям только флаг использования данного условия if (!FilterDlg[ID_FF_MATCHSIZE].Selected) for (int i=ID_FF_SIZEFROMSIGN; i <= ID_FF_SIZETOEDIT; i++) FilterDlg[i].Flags|=DIF_DISABLE; // Лист для комбобокса времени файла FarList DateList= {sizeof(FarList)}; FarListItem TableItemDate[FDATE_COUNT]= {}; // Настройка списка типов дат файла DateList.Items=TableItemDate; DateList.ItemsNumber=FDATE_COUNT; for (int i=0; i < FDATE_COUNT; ++i) TableItemDate[i].Text=MSG(MFileFilterWrited+i); DWORD DateType; FILETIME DateAfter, DateBefore; bool bRelative; FilterDlg[ID_FF_MATCHDATE].Selected=FF->GetDate(&DateType,&DateAfter,&DateBefore,&bRelative)?1:0; FilterDlg[ID_FF_DATERELATIVE].Selected=bRelative?1:0; FilterDlg[ID_FF_DATETYPE].ListItems=&DateList; TableItemDate[DateType].Flags=LIF_SELECTED; if (bRelative) { ConvertRelativeDate(DateAfter, FilterDlg[ID_FF_DAYSAFTEREDIT].strData, FilterDlg[ID_FF_TIMEAFTEREDIT].strData); ConvertRelativeDate(DateBefore, FilterDlg[ID_FF_DAYSBEFOREEDIT].strData, FilterDlg[ID_FF_TIMEBEFOREEDIT].strData); } else { ConvertDate(DateAfter,FilterDlg[ID_FF_DATEAFTEREDIT].strData,FilterDlg[ID_FF_TIMEAFTEREDIT].strData,12,FALSE,FALSE,2); ConvertDate(DateBefore,FilterDlg[ID_FF_DATEBEFOREEDIT].strData,FilterDlg[ID_FF_TIMEBEFOREEDIT].strData,12,FALSE,FALSE,2); } if (!FilterDlg[ID_FF_MATCHDATE].Selected) for (int i=ID_FF_DATETYPE; i <= ID_FF_BLANK; i++) FilterDlg[i].Flags|=DIF_DISABLE; DWORD AttrSet, AttrClear; FilterDlg[ID_FF_MATCHATTRIBUTES].Selected=FF->GetAttr(&AttrSet,&AttrClear)?1:0; FilterDlg[ID_FF_READONLY].Selected=(AttrSet & FILE_ATTRIBUTE_READONLY?1:AttrClear & FILE_ATTRIBUTE_READONLY?0:2); FilterDlg[ID_FF_ARCHIVE].Selected=(AttrSet & FILE_ATTRIBUTE_ARCHIVE?1:AttrClear & FILE_ATTRIBUTE_ARCHIVE?0:2); FilterDlg[ID_FF_HIDDEN].Selected=(AttrSet & FILE_ATTRIBUTE_HIDDEN?1:AttrClear & FILE_ATTRIBUTE_HIDDEN?0:2); FilterDlg[ID_FF_SYSTEM].Selected=(AttrSet & FILE_ATTRIBUTE_SYSTEM?1:AttrClear & FILE_ATTRIBUTE_SYSTEM?0:2); FilterDlg[ID_FF_COMPRESSED].Selected=(AttrSet & FILE_ATTRIBUTE_COMPRESSED?1:AttrClear & FILE_ATTRIBUTE_COMPRESSED?0:2); FilterDlg[ID_FF_ENCRYPTED].Selected=(AttrSet & FILE_ATTRIBUTE_ENCRYPTED?1:AttrClear & FILE_ATTRIBUTE_ENCRYPTED?0:2); FilterDlg[ID_FF_DIRECTORY].Selected=(AttrSet & FILE_ATTRIBUTE_DIRECTORY?1:AttrClear & FILE_ATTRIBUTE_DIRECTORY?0:2); FilterDlg[ID_FF_NOTINDEXED].Selected=(AttrSet & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED?1:AttrClear & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED?0:2); FilterDlg[ID_FF_SPARSE].Selected=(AttrSet & FILE_ATTRIBUTE_SPARSE_FILE?1:AttrClear & FILE_ATTRIBUTE_SPARSE_FILE?0:2); FilterDlg[ID_FF_TEMP].Selected=(AttrSet & FILE_ATTRIBUTE_TEMPORARY?1:AttrClear & FILE_ATTRIBUTE_TEMPORARY?0:2); FilterDlg[ID_FF_REPARSEPOINT].Selected=(AttrSet & FILE_ATTRIBUTE_REPARSE_POINT?1:AttrClear & FILE_ATTRIBUTE_REPARSE_POINT?0:2); FilterDlg[ID_FF_OFFLINE].Selected=(AttrSet & FILE_ATTRIBUTE_OFFLINE?1:AttrClear & FILE_ATTRIBUTE_OFFLINE?0:2); FilterDlg[ID_FF_VIRTUAL].Selected=(AttrSet & FILE_ATTRIBUTE_VIRTUAL?1:AttrClear & FILE_ATTRIBUTE_VIRTUAL?0:2); if (!FilterDlg[ID_FF_MATCHATTRIBUTES].Selected) { for (int i=ID_FF_READONLY; i <= ID_FF_VIRTUAL; i++) FilterDlg[i].Flags|=DIF_DISABLE; } Dialog Dlg(FilterDlg,ARRAYSIZE(FilterDlg),FileFilterConfigDlgProc,ColorConfig?&Colors:nullptr); Dlg.SetHelp(ColorConfig?L"HighlightEdit":L"Filter"); Dlg.SetPosition(-1,-1,FilterDlg[ID_FF_TITLE].X2+4,FilterDlg[ID_FF_TITLE].Y2+2); Dlg.SetAutomation(ID_FF_MATCHMASK,ID_FF_MASKEDIT,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHSIZE,ID_FF_SIZEFROMSIGN,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHSIZE,ID_FF_SIZEFROMEDIT,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHSIZE,ID_FF_SIZETOSIGN,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHSIZE,ID_FF_SIZETOEDIT,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_DATETYPE,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_DATERELATIVE,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_DATEAFTERSIGN,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_DATEAFTEREDIT,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_DAYSAFTEREDIT,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_TIMEAFTEREDIT,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_DATEBEFORESIGN,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_DATEBEFOREEDIT,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_DAYSBEFOREEDIT,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_TIMEBEFOREEDIT,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_CURRENT,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHDATE,ID_FF_BLANK,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_READONLY,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_ARCHIVE,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_HIDDEN,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_SYSTEM,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_COMPRESSED,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_ENCRYPTED,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_NOTINDEXED,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_SPARSE,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_TEMP,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_REPARSEPOINT,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_OFFLINE,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_VIRTUAL,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); Dlg.SetAutomation(ID_FF_MATCHATTRIBUTES,ID_FF_DIRECTORY,DIF_DISABLE,DIF_NONE,DIF_NONE,DIF_DISABLE); for (;;) { Dlg.ClearDone(); Dlg.Process(); int ExitCode=Dlg.GetExitCode(); if (ExitCode==ID_FF_OK) // Ok { // Если введённая пользователем маска не корректна, тогда вернёмся в диалог if (FilterDlg[ID_FF_MATCHMASK].Selected && !FileMask.Set(FilterDlg[ID_FF_MASKEDIT].strData,0)) continue; if (FilterDlg[ID_HER_MARKTRANSPARENT].Selected) Colors.MarkChar|=0x00FF0000; else Colors.MarkChar&=0x0000FFFF; FF->SetColors(&Colors); FF->SetContinueProcessing(FilterDlg[ID_HER_CONTINUEPROCESSING].Selected!=0); FF->SetTitle(FilterDlg[ID_FF_NAMEEDIT].strData); FF->SetMask(FilterDlg[ID_FF_MATCHMASK].Selected!=0, FilterDlg[ID_FF_MASKEDIT].strData); FF->SetSize(FilterDlg[ID_FF_MATCHSIZE].Selected!=0, FilterDlg[ID_FF_SIZEFROMEDIT].strData, FilterDlg[ID_FF_SIZETOEDIT].strData); FF->SetHardLinks(FilterDlg[ID_FF_HARDLINKS].Selected!=0,0,0); //пока устанавливаем только флаг использования признака bRelative = FilterDlg[ID_FF_DATERELATIVE].Selected!=0; LPWSTR TimeBefore = FilterDlg[ID_FF_TIMEBEFOREEDIT].strData.GetBuffer(); TimeBefore[8] = TimeSeparator; FilterDlg[ID_FF_TIMEBEFOREEDIT].strData.ReleaseBuffer(FilterDlg[ID_FF_TIMEBEFOREEDIT].strData.GetLength()); LPWSTR TimeAfter = FilterDlg[ID_FF_TIMEAFTEREDIT].strData.GetBuffer(); TimeAfter[8] = TimeSeparator; FilterDlg[ID_FF_TIMEAFTEREDIT].strData.ReleaseBuffer(FilterDlg[ID_FF_TIMEAFTEREDIT].strData.GetLength()); StrToDateTime(FilterDlg[bRelative?ID_FF_DAYSAFTEREDIT:ID_FF_DATEAFTEREDIT].strData,FilterDlg[ID_FF_TIMEAFTEREDIT].strData,DateAfter,DateFormat,DateSeparator,TimeSeparator,bRelative); StrToDateTime(FilterDlg[bRelative?ID_FF_DAYSBEFOREEDIT:ID_FF_DATEBEFOREEDIT].strData,FilterDlg[ID_FF_TIMEBEFOREEDIT].strData,DateBefore,DateFormat,DateSeparator,TimeSeparator,bRelative); FF->SetDate(FilterDlg[ID_FF_MATCHDATE].Selected!=0, FilterDlg[ID_FF_DATETYPE].ListPos, DateAfter, DateBefore, bRelative); AttrSet=0; AttrClear=0; AttrSet|=(FilterDlg[ID_FF_READONLY].Selected==1?FILE_ATTRIBUTE_READONLY:0); AttrSet|=(FilterDlg[ID_FF_ARCHIVE].Selected==1?FILE_ATTRIBUTE_ARCHIVE:0); AttrSet|=(FilterDlg[ID_FF_HIDDEN].Selected==1?FILE_ATTRIBUTE_HIDDEN:0); AttrSet|=(FilterDlg[ID_FF_SYSTEM].Selected==1?FILE_ATTRIBUTE_SYSTEM:0); AttrSet|=(FilterDlg[ID_FF_COMPRESSED].Selected==1?FILE_ATTRIBUTE_COMPRESSED:0); AttrSet|=(FilterDlg[ID_FF_ENCRYPTED].Selected==1?FILE_ATTRIBUTE_ENCRYPTED:0); AttrSet|=(FilterDlg[ID_FF_DIRECTORY].Selected==1?FILE_ATTRIBUTE_DIRECTORY:0); AttrSet|=(FilterDlg[ID_FF_NOTINDEXED].Selected==1?FILE_ATTRIBUTE_NOT_CONTENT_INDEXED:0); AttrSet|=(FilterDlg[ID_FF_SPARSE].Selected==1?FILE_ATTRIBUTE_SPARSE_FILE:0); AttrSet|=(FilterDlg[ID_FF_TEMP].Selected==1?FILE_ATTRIBUTE_TEMPORARY:0); AttrSet|=(FilterDlg[ID_FF_REPARSEPOINT].Selected==1?FILE_ATTRIBUTE_REPARSE_POINT:0); AttrSet|=(FilterDlg[ID_FF_OFFLINE].Selected==1?FILE_ATTRIBUTE_OFFLINE:0); AttrSet|=(FilterDlg[ID_FF_VIRTUAL].Selected==1?FILE_ATTRIBUTE_VIRTUAL:0); AttrClear|=(FilterDlg[ID_FF_READONLY].Selected==0?FILE_ATTRIBUTE_READONLY:0); AttrClear|=(FilterDlg[ID_FF_ARCHIVE].Selected==0?FILE_ATTRIBUTE_ARCHIVE:0); AttrClear|=(FilterDlg[ID_FF_HIDDEN].Selected==0?FILE_ATTRIBUTE_HIDDEN:0); AttrClear|=(FilterDlg[ID_FF_SYSTEM].Selected==0?FILE_ATTRIBUTE_SYSTEM:0); AttrClear|=(FilterDlg[ID_FF_COMPRESSED].Selected==0?FILE_ATTRIBUTE_COMPRESSED:0); AttrClear|=(FilterDlg[ID_FF_ENCRYPTED].Selected==0?FILE_ATTRIBUTE_ENCRYPTED:0); AttrClear|=(FilterDlg[ID_FF_DIRECTORY].Selected==0?FILE_ATTRIBUTE_DIRECTORY:0); AttrClear|=(FilterDlg[ID_FF_NOTINDEXED].Selected==0?FILE_ATTRIBUTE_NOT_CONTENT_INDEXED:0); AttrClear|=(FilterDlg[ID_FF_SPARSE].Selected==0?FILE_ATTRIBUTE_SPARSE_FILE:0); AttrClear|=(FilterDlg[ID_FF_TEMP].Selected==0?FILE_ATTRIBUTE_TEMPORARY:0); AttrClear|=(FilterDlg[ID_FF_REPARSEPOINT].Selected==0?FILE_ATTRIBUTE_REPARSE_POINT:0); AttrClear|=(FilterDlg[ID_FF_OFFLINE].Selected==0?FILE_ATTRIBUTE_OFFLINE:0); AttrClear|=(FilterDlg[ID_FF_VIRTUAL].Selected==0?FILE_ATTRIBUTE_VIRTUAL:0); FF->SetAttr(FilterDlg[ID_FF_MATCHATTRIBUTES].Selected!=0, AttrSet, AttrClear); return true; } else break; } return false; }
void __fastcall TWithDrawERRForm::cxButton2Click(TObject *Sender) { WORD status; int tmpbalance; int tmpkh,tmpsycs; double tmpintye; double tmpye; unsigned char keymode,secnum,Delayms,mode; unsigned char key[6]; unsigned char dwmm[6]; unsigned char daytime[4]; unsigned char kh[4]; unsigned char balance[4]; unsigned char cardtype[1]; unsigned char czmm[3]; unsigned char synum[3]; mode = 0x02; Delayms = DelaySecond; keymode = CARDPasswordEdition; secnum = UsingSecNUM; key[0] = CARDPassword[0]; key[1] = CARDPassword[1]; key[2] = CARDPassword[2]; key[3] = CARDPassword[3]; key[4] = CARDPassword[4]; key[5] = CARDPassword[5]; if(LoadHModule) { if(readwatercardinfo)//readcardinfo) { // status = readcardinfo(readcomno,keymode,secnum,key,kh,balance, // dwmm,synum,daytime,cardtype,czmm,Delayms); status = readwatercardinfo(readcomno,keymode,secnum,key,kh,balance, dwmm,daytime,cardtype,Delayms); if(status > 99) { ShowMessage("通讯错误!"); } else if (1 == status) { ShowMessage("请把卡片放好!"); } else if (2 == status) { ShowMessage("卡号大于192000或等于0!"); } else if (4 == status) { ShowMessage("卡片密码不对!"); } else if (5 == status) { ShowMessage("读写卡不稳定!"); } else if (6 == status) { ShowMessage("卡结构不对!"); } else if (10 == status) { ShowMessage("卡结构不对!"); } else if (0 != status) { ShowMessage("该卡未发行或已退卡!"); } else { ADOReChargeQuery->Close(); ADOReChargeQuery->SQL->Clear(); ADOReChargeQuery->SQL->Add("select * from XTSET"); String mmstr = ""; unsigned char tmpchar; tmpchar = dwmm[0]; tmpchar = tmpchar>>4; mmstr += (int)tmpchar; tmpchar = dwmm[0]; tmpchar = tmpchar<<4; tmpchar = tmpchar>>4; mmstr += (int)tmpchar; tmpchar = dwmm[1]; tmpchar = tmpchar>>4; mmstr += (int)tmpchar; tmpchar = dwmm[1]; tmpchar = tmpchar<<4; tmpchar = tmpchar>>4; mmstr += (int)tmpchar; ADOReChargeQuery->Close(); String tmpstr; tmpkh = (int)kh[1]*256*256+(int)kh[2]*256+(int)kh[3]; tmpsycs = 0;//(int)synum[0]*256+(int)synum[1]; tmpintye = (double)balance[1]*256*256+(double)balance[2]*256+(double)balance[3]; tmpye = tmpintye/100; ADOReChargeQuery->Close(); ADOReChargeQuery->SQL->Clear(); tmpstr = "select * from KZT where kh="; tmpstr += tmpkh; ADOReChargeQuery->SQL->Add(tmpstr); ADOReChargeQuery->Open(); if(!ADOReChargeQuery->IsEmpty()) { if(0 != ADOReChargeQuery->FieldByName("GS")->AsInteger) { ShowMessage("此卡已挂失,请没收此卡!"); ADOReChargeQuery->Close(); return; } } else { ShowMessage("此卡不是本系统发出的卡!"); ADOReChargeQuery->Close(); return; } ADOReChargeQuery->Close(); ADOReChargeQuery->SQL->Clear(); tmpstr = "select * from CARD where kh="; tmpstr += tmpkh; ADOReChargeQuery->SQL->Add(tmpstr); ADOReChargeQuery->Open(); if(!ADOReChargeQuery->IsEmpty()) { ADOReChargeQuery->Close(); beepofreaddll(readcomno, '10'); int oldkh = StrToInt(cxTextEdit1->Text.Trim()); if(oldkh == tmpkh) { cxTextEdit18->Text = tmpye; ADOReChargeQuery->SQL->Clear(); String Chksqlstr = "select * from HJL where KH="; Chksqlstr += tmpkh; Chksqlstr += " order by OPTIME asc"; ADOReChargeQuery->SQL->Add(Chksqlstr); ADOReChargeQuery->Open(); if(ADOReChargeQuery->IsEmpty()) { beepofreaddll(readcomno, '10'); String ReChargeOutstr = "取款成功!卡余额为:"; ReChargeOutstr += tmpye; ShowMessage(ReChargeOutstr); this->Close(); } else { if(tmpye == ADOReChargeQuery->FieldByName("YE")->AsFloat) { beepofreaddll(readcomno, '10'); String ReChargeOutstr = "取款成功!卡余额为:"; ReChargeOutstr += tmpye; ShowMessage(ReChargeOutstr); ADOReChargeQuery->Close(); this->Close(); } else { //写充值金额 if(!LaunchWaterNewCard)//LaunchNewCard) { ShowMessage("写卡函数加载失败"); return; } tmpsycs = 0;//(int)synum[0]*256+(int)synum[1]; tmpsycs++; unsigned char writesynum[2]; writesynum[0] = (char)(tmpsycs/256); writesynum[1] = (char)(tmpsycs%256); unsigned char writebalance[4]; ADOReChargeQuery->Last(); int ReChargeMoney = ADOReChargeQuery->FieldByName("JE")->AsInteger; double writetmpbalance = ADOReChargeQuery->FieldByName("JE")->AsFloat; tmpye -= writetmpbalance; writetmpbalance *= 100; writebalance[0] = 0x00; writebalance[1] = (unsigned char)((int)writetmpbalance/65536); writetmpbalance = (int)writetmpbalance%65536; writebalance[2] = (unsigned char)((int)writetmpbalance/256); writetmpbalance = (int)writetmpbalance%256; writebalance[3] = (unsigned char)writetmpbalance; WORD WriteStatus; String DateofLaunchCard; SYSTEMTIME tmpsystime; GetLocalTime(&tmpsystime); DateofLaunchCard = DateTimeToStr(SystemTimeToDateTime(tmpsystime)); /* WriteStatus = LaunchNewCard(readcomno, keymode, secnum, key, kh, writebalance, dwmm, writesynum, daytime, cardtype, czmm, mode, Delayms); */ WriteStatus = LaunchWaterNewCard(readcomno, keymode, secnum, key, kh, writebalance, dwmm, daytime, cardtype, mode, Delayms); if(WriteStatus) { ShowMessage("修正失败,请重试!"); ADOReChargeQuery->Close(); return; } else { //取款入库、入狗开始 ADOReChargeQuery->Close(); ADOReChargeQuery->SQL->Clear(); String sqlstr = "insert into MX values(:BH,:KH,:SF_YE,"; sqlstr = sqlstr + ":SFJE,:SYCS,:SFRQ,:JYNO,"; sqlstr = sqlstr + ":GZZID,:SFLX,:CZY,:SCRQ)"; ADOReChargeQuery->SQL->Add(sqlstr); ADOReChargeQuery->Parameters->ParamByName("BH")->Value = cxTextEdit7->Text; ADOReChargeQuery->Parameters->ParamByName("KH")->Value = tmpkh; ADOReChargeQuery->Parameters->ParamByName("SF_YE")->Value = tmpye; ADOReChargeQuery->Parameters->ParamByName("SFJE")->Value = ReChargeMoney; ADOReChargeQuery->Parameters->ParamByName("SYCS")->Value = tmpsycs; ADOReChargeQuery->Parameters->ParamByName("SFRQ")->Value = DateofLaunchCard; ADOReChargeQuery->Parameters->ParamByName("JYNO")->Value = 1001; ADOReChargeQuery->Parameters->ParamByName("GZZID")->Value = 1; ADOReChargeQuery->Parameters->ParamByName("SFLX")->Value = "d"; ADOReChargeQuery->Parameters->ParamByName("CZY")->Value = OperatorName; ADOReChargeQuery->Parameters->ParamByName("SCRQ")->Value = DateofLaunchCard; ADOReChargeQuery->ExecSQL(); ADOReChargeQuery->Close(); //插入CK表 ADOReChargeQuery->SQL->Clear(); sqlstr = "insert into CK values(:kh,:bh,:sf_ye,:sf_fl,:ckxj,"; sqlstr += ":glf,:ckje,:lqbt,:xkje,:sycs,:sfrq,:jyno,:gzzid,:sflx,:CZY)"; ADOReChargeQuery->SQL->Add(sqlstr); ADOReChargeQuery->Parameters->ParamByName("kh")->Value = tmpkh; ADOReChargeQuery->Parameters->ParamByName("bh")->Value = cxTextEdit7->Text; ADOReChargeQuery->Parameters->ParamByName("sf_ye")->Value = tmpye; ADOReChargeQuery->Parameters->ParamByName("sf_fl")->Value = 1; ADOReChargeQuery->Parameters->ParamByName("ckxj")->Value = ReChargeMoney; ADOReChargeQuery->Parameters->ParamByName("glf")->Value = 0; ADOReChargeQuery->Parameters->ParamByName("ckje")->Value = ReChargeMoney; ADOReChargeQuery->Parameters->ParamByName("lqbt")->Value = 0; ADOReChargeQuery->Parameters->ParamByName("xkje")->Value = ReChargeMoney; ADOReChargeQuery->Parameters->ParamByName("sycs")->Value = tmpsycs; ADOReChargeQuery->Parameters->ParamByName("sfrq")->Value = DateofLaunchCard; ADOReChargeQuery->Parameters->ParamByName("jyno")->Value = 1001; ADOReChargeQuery->Parameters->ParamByName("gzzid")->Value = 1; ADOReChargeQuery->Parameters->ParamByName("sflx")->Value = "d"; ADOReChargeQuery->Parameters->ParamByName("CZY")->Value = OperatorName; ADOReChargeQuery->ExecSQL(); ADOReChargeQuery->Close(); //填写操作记录表 sqlstr = "insert into OperationList values(:BH,:KH,:JE,:YE,:LX,:Operator,:DateTime)"; ADOReChargeQuery->SQL->Clear(); ADOReChargeQuery->SQL->Add(sqlstr); ADOReChargeQuery->Parameters->ParamByName("BH")->Value = cxTextEdit7->Text; ADOReChargeQuery->Parameters->ParamByName("KH")->Value = tmpkh; ADOReChargeQuery->Parameters->ParamByName("JE")->Value = ReChargeMoney; ADOReChargeQuery->Parameters->ParamByName("YE")->Value = tmpye; ADOReChargeQuery->Parameters->ParamByName("LX")->Value = "取款"; ADOReChargeQuery->Parameters->ParamByName("Operator")->Value = OperatorName; ADOReChargeQuery->Parameters->ParamByName("DateTime")->Value = DateofLaunchCard; ADOReChargeQuery->ExecSQL(); ADOReChargeQuery->Close(); //更新CARD,CARD_F表 sqlstr = "select * from CARD where BH='"; sqlstr = sqlstr + cxTextEdit7->Text + "'"; ADOReChargeQuery->SQL->Clear(); ADOReChargeQuery->SQL->Add(sqlstr); ADOReChargeQuery->Open(); if(!ADOReChargeQuery->IsEmpty()) { ADOReChargeQuery->Edit(); ADOReChargeQuery->FieldByName("SF_YE")->AsFloat = tmpye; ADOReChargeQuery->FieldByName("SFYEDT")->AsDateTime = StrToDateTime(DateofLaunchCard); ADOReChargeQuery->FieldByName("SYCS")->AsInteger = tmpsycs; ADOReChargeQuery->Post(); } sqlstr = "select * from CARD_F where BH='"; sqlstr = sqlstr + cxTextEdit7->Text + "'"; ADOReChargeQuery->SQL->Clear(); ADOReChargeQuery->SQL->Add(sqlstr); ADOReChargeQuery->Open(); if(!ADOReChargeQuery->IsEmpty()) { ADOReChargeQuery->Edit(); ADOReChargeQuery->FieldByName("SF_YE")->AsFloat = tmpye; ADOReChargeQuery->FieldByName("SFYEDT")->AsDateTime = StrToDateTime(DateofLaunchCard); ADOReChargeQuery->FieldByName("SYCS")->AsInteger = tmpsycs; ADOReChargeQuery->Post(); } ADOReChargeQuery->Close(); //写加密狗充值总额 if(DOGChk) { unsigned char tempbuf[8]; SFK_ZE -= ReChargeMoney; UpZETable->FieldByName("SFKZE")->AsFloat -= ReChargeMoney; memcpy(tempbuf,&SFK_ZE,8); unsigned char hightempchar1; unsigned char lowtempchar1; for(int t = 0; t < 8; t++) { hightempchar1 = tempbuf[t]&0xf0; lowtempchar1 = tempbuf[t]&0x0f; hightempchar1 = hightempchar1>>4; hightempchar1 = hightempchar1&0x0f; lowtempchar1 = lowtempchar1<<4; lowtempchar1 = lowtempchar1&0xf0; tempbuf[t] = hightempchar1|lowtempchar1; } int dogoffset = 0x0034; int doglen = 8; RY3_Write(doghandle,dogoffset,tempbuf,doglen); } //写加密狗完毕 //取款入库、入狗结束 beepofreaddll(readcomno, '10'); String ReChargeOutstr = "取款成功!卡余额为:"; // ReChargeOutstr += tmpye; ReChargeOutstr += tmpye; ShowMessage(ReChargeOutstr); ADOReChargeQuery->Last(); ADOReChargeQuery->Delete(); ADOReChargeQuery->Close(); this->Close(); } } } } else { beepofreaddll(readcomno, '10'); ShowMessage("此卡不是充值出错的卡片,请更换!"); } // ReadCardBTN->Enabled = false; } else {
void __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("写卡函数加载失败!"); } } } } }
wxDateTime TIniFile::ReadDateTime(const wxString &Section, const wxString &Ident, wxDateTime Default) { return StrToDateTime(ReadString(Section, Ident, DateTimeToStr(Default))); }
void __fastcall TBatchCollectDataThread::AnalyzeDataFunc() { int recordNUM = (int)receivebuf[7]*256+(int)receivebuf[8]; if((recordNUM<128)&&(recordNUM>0)&&(0x20 == receivebuf[0])&&(0x03 == receivebuf[1]) &&(DWPassword[0] == receivebuf[2])&&(DWPassword[1] == receivebuf[3]) &&(PosNumber == ((int)receivebuf[12]*256+(int)receivebuf[5])) &&(0x23 == receivebuf[4])) { //分析数据 String insqlstr = ""; String AddinPosinsqlstr = ""; String Watersqlstr = ""; String Errorinsqlstr = ""; int PosNumber = (int)receivebuf[12]*256+(int)receivebuf[5]; int RecordIndexPos; int tmpKH; int tmpXFCS; double tmpYE; double tmpXFJE; String tmpDATESTR; String tmpXFLX; String tmpSQLSTR; unsigned char instr[4]; unsigned char outstr[6]; ZeroMemory(instr, 4); ZeroMemory(outstr, 6); String updatetimestr = DateTimeToStr(Now()); for (int i = 0; i < (int)receivebuf[8]; i++) { RecordIndexPos = 14 + i*16; tmpKH = (int)receivebuf[RecordIndexPos]*256*256 + (int)receivebuf[RecordIndexPos+1]*256 + (int)receivebuf[RecordIndexPos+2]; tmpXFCS = (int)receivebuf[RecordIndexPos+3]*256+(int)receivebuf[RecordIndexPos+4]; tmpYE = ((double)receivebuf[RecordIndexPos+5]*256*256+(double)receivebuf[RecordIndexPos+6]*256+(double)receivebuf[RecordIndexPos+7])/100; tmpXFJE = ((double)receivebuf[RecordIndexPos+8]*256*256+(double)receivebuf[RecordIndexPos+9]*256+(double)receivebuf[RecordIndexPos+10])/100; instr[0] = receivebuf[RecordIndexPos+11]; instr[1] = receivebuf[RecordIndexPos+12]; instr[2] = receivebuf[RecordIndexPos+13]; instr[3] = receivebuf[RecordIndexPos+14]; if(GetnormaldateFunc) { //这里进行时间判断 if(0 != GetnormaldateFunc(instr, outstr)) { /* outstr[0] = '0'; outstr[1] = '1'; outstr[2] = '1'; outstr[3] = '0'; outstr[4] = '0'; outstr[5] = '0'; */ tmpDATESTR = DateTimeToStr(Now()); } else { tmpDATESTR = "20"+IntToHex((int)outstr[0], 2)+"-"+ IntToHex((int)outstr[1], 2)+"-"+ IntToHex((int)outstr[2], 2)+" "+ IntToHex((int)outstr[3], 2)+":"+ IntToHex((int)outstr[4], 2)+":"+ IntToHex((int)outstr[5], 2); } } else { /* outstr[0] = '0'; outstr[1] = '1'; outstr[2] = '1'; outstr[3] = '0'; outstr[4] = '0'; outstr[5] = '0'; tmpDATESTR = "20"+IntToHex((int)outstr[0], 2)+"-"+ IntToHex((int)outstr[1], 2)+"-"+ IntToHex((int)outstr[2], 2)+" "+ IntToHex((int)outstr[3], 2)+":"+ IntToHex((int)outstr[4], 2)+":"+ IntToHex((int)outstr[5], 2); */ tmpDATESTR = DateTimeToStr(Now()); } String UpdateTime = updatetimestr; try { StrToDateTime(tmpDATESTR); } catch(...) { tmpDATESTR = DateTimeToStr(Now()); } if(StrToDateTime(tmpDATESTR)>Now()) { tmpDATESTR = DateTimeToStr(Now()); } else { TDateTime tmpdt = StrToDateTime(tmpDATESTR); tmpdt = IncYear(tmpdt, 1); if(tmpdt<Now()) { tmpDATESTR = DateTimeToStr(Now()); } } if(0 == receivebuf[RecordIndexPos+15]) tmpXFLX = "X"; else if(1 == receivebuf[RecordIndexPos+15]) tmpXFLX = "Y"; else if(2 == receivebuf[RecordIndexPos+15]) tmpXFLX = "B"; else if(3 == receivebuf[RecordIndexPos+15]) tmpXFLX = "I"; else if(4 == receivebuf[RecordIndexPos+15]) tmpXFLX = "L"; else if(5 == receivebuf[RecordIndexPos+15]) tmpXFLX = "M"; else if(6 == receivebuf[RecordIndexPos+15]) tmpXFLX = "O"; else if(7 == receivebuf[RecordIndexPos+15]) tmpXFLX = "P"; else if(250 == receivebuf[RecordIndexPos+15]) tmpXFLX = "Z"; else if(65 == receivebuf[RecordIndexPos+15]) //breakfast tmpXFLX = "S"; else if(66 == receivebuf[RecordIndexPos+15]) //lunch tmpXFLX = "D"; else if(67 == receivebuf[RecordIndexPos+15]) //supper tmpXFLX = "F"; else if(68 == receivebuf[RecordIndexPos+15]) //night tmpXFLX = "G"; else if(249 == receivebuf[RecordIndexPos+15]) tmpXFLX = "W"; else tmpXFLX = "E"; if("W" == tmpXFLX) { //analyze water data; int jqh; int waterkh; double xf1; double xf2; xf1 = ((double)receivebuf[RecordIndexPos+0]+(double)receivebuf[RecordIndexPos+1]*256+ (double)receivebuf[RecordIndexPos+2]*256*256+(double)receivebuf[RecordIndexPos+3]*256*256*256)/100; xf2 = ((double)(receivebuf[RecordIndexPos+4]^0xff)+(double)(receivebuf[RecordIndexPos+5]^0xff)*256+ (double)(receivebuf[RecordIndexPos+6]^0xff)*256*256+(double)(receivebuf[RecordIndexPos+7]^0xff)*256*256*256)/100; if(xf1 == xf2) { jqh = (int)receivebuf[RecordIndexPos+8]*256+(int)receivebuf[RecordIndexPos+9]; waterkh = (int)receivebuf[RecordIndexPos+10]*256*256*256+ (int)receivebuf[RecordIndexPos+11]*256*256+(int)receivebuf[12]*256+ (int)receivebuf[RecordIndexPos+13]; // String tjsqlstr = "insert into WTJ values(:JH,:CJKH,:XFZE,:SCSJ)"; String watertmpsqlstr = "insert into WTJ values("; watertmpsqlstr += jqh; watertmpsqlstr += ","; watertmpsqlstr += waterkh; watertmpsqlstr += ","; watertmpsqlstr += xf1; watertmpsqlstr += ",'"; watertmpsqlstr += DateTimeToStr(Now()); watertmpsqlstr += "')"; Watersqlstr += watertmpsqlstr; // MessageBox(SDIAppForm->Handle, watertmpsqlstr.t_str(), "WTJstr", MB_OK|MB_ICONERROR); } //end analyze; } else { String F_bhstr; bool errortag = false; UpdateDataBaseQuery->Close(); tmpSQLSTR = "select * from CARD_F where KH = '"; tmpSQLSTR += tmpKH; tmpSQLSTR += "'"; UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(tmpSQLSTR); UpdateDataBaseQuery->Open(); if(!UpdateDataBaseQuery->IsEmpty()) { // SerialNum = UpdateDataBaseQuery->FieldByName("BH")->AsAnsiString.Trim(); String tmpsqlstr = "insert into MX Values('"; tmpsqlstr += UpdateDataBaseQuery->FieldByName("BH")->AsAnsiString.Trim(); tmpsqlstr += "',"; tmpsqlstr += tmpKH; tmpsqlstr += ","; tmpsqlstr += tmpYE; tmpsqlstr += ","; tmpsqlstr += tmpXFJE; tmpsqlstr += ","; tmpsqlstr += tmpXFCS; tmpsqlstr += ",'"; tmpsqlstr += tmpDATESTR; tmpsqlstr += "',"; tmpsqlstr += PosNumber; tmpsqlstr += ",0,'"; tmpsqlstr += tmpXFLX; tmpsqlstr += "','"; tmpsqlstr += OperatorName; tmpsqlstr += "','"; tmpsqlstr += updatetimestr; tmpsqlstr += "')"; insqlstr += tmpsqlstr; if("I" == tmpXFLX) { String tempaddinpossqlstr = "insert into CK Values("; tempaddinpossqlstr += tmpKH; tempaddinpossqlstr += ",'"; tempaddinpossqlstr += UpdateDataBaseQuery->FieldByName("BH")->AsAnsiString.Trim(); tempaddinpossqlstr += "',"; tempaddinpossqlstr += tmpYE; tempaddinpossqlstr += ",1,"; tempaddinpossqlstr += tmpXFJE;//PosNumber; tempaddinpossqlstr += ",0,"; tempaddinpossqlstr += tmpXFJE;//tmpXFLX; tempaddinpossqlstr += ",0,"; tempaddinpossqlstr += tmpXFJE; tempaddinpossqlstr += ","; tempaddinpossqlstr += tmpXFCS; tempaddinpossqlstr += ",'"; tempaddinpossqlstr += tmpDATESTR; tempaddinpossqlstr += "',"; tempaddinpossqlstr += PosNumber; tempaddinpossqlstr += ",1,'I','"; tempaddinpossqlstr += OperatorName; tempaddinpossqlstr += "')"; AddinPosinsqlstr += tempaddinpossqlstr; } /* if("E" == tempXFLX) { String tmperrorsqlstr = "insert into MX Values('"; tmperrorsqlstr += UpdateDataBaseQuery->FieldByName("BH")->AsAnsiString.Trim(); tmperrorsqlstr += "',"; tmperrorsqlstr += tmpKH; tmperrorsqlstr += ","; tmperrorsqlstr += tmpYE; tmperrorsqlstr += ","; tmperrorsqlstr += tmpXFJE; tmperrorsqlstr += ","; tmperrorsqlstr += tmpXFCS; tmperrorsqlstr += ",'"; tmperrorsqlstr += tmpDATESTR; tmperrorsqlstr += "',"; tmperrorsqlstr += PosNumber; tmperrorsqlstr += ",0,'"; tmperrorsqlstr += tmpXFLX; tmperrorsqlstr += "','"; tmperrorsqlstr += OperatorName; tmperrorsqlstr += "','"; tmperrorsqlstr += updatetimestr; tmperrorsqlstr += "')"; Errorinsqlstr += tmperrorsqlstr; } */ if("E"!=tmpXFLX) { if(UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger < tmpXFCS) { UpdateDataBaseQuery->Edit(); UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger = tmpXFCS; UpdateDataBaseQuery->FieldByName("SF_YE")->AsFloat = tmpYE; UpdateDataBaseQuery->FieldByName("SFYEDT")->AsString = tmpDATESTR; UpdateDataBaseQuery->Post(); } } F_bhstr = UpdateDataBaseQuery->FieldByName("BH")->AsString; } else errortag = true; UpdateDataBaseQuery->Close(); if("E"!=tmpXFLX) { tmpSQLSTR = "select * from CARD_F where KH = '"; tmpSQLSTR += tmpKH; tmpSQLSTR += "' and BH='"; tmpSQLSTR += F_bhstr; tmpSQLSTR += "'"; UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(tmpSQLSTR); UpdateDataBaseQuery->Open(); if(!UpdateDataBaseQuery->IsEmpty()) { if(UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger < tmpXFCS) { UpdateDataBaseQuery->Edit(); UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger = tmpXFCS; UpdateDataBaseQuery->FieldByName("SF_YE")->AsFloat = tmpYE; UpdateDataBaseQuery->FieldByName("SFYEDT")->AsString = tmpDATESTR; UpdateDataBaseQuery->Post(); } } else errortag = true; UpdateDataBaseQuery->Close(); tmpSQLSTR = "select * from CARD where KH = '"; tmpSQLSTR += tmpKH; tmpSQLSTR += "' and BH='"; tmpSQLSTR += F_bhstr; tmpSQLSTR += "'"; UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(tmpSQLSTR); UpdateDataBaseQuery->Open(); if(!UpdateDataBaseQuery->IsEmpty()) { if(UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger < tmpXFCS) { UpdateDataBaseQuery->Edit(); UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger = tmpXFCS; UpdateDataBaseQuery->FieldByName("SF_YE")->AsFloat = tmpYE; UpdateDataBaseQuery->FieldByName("SFYEDT")->AsString = tmpDATESTR; UpdateDataBaseQuery->Post(); } } else errortag = true; UpdateDataBaseQuery->Close(); } //进度显示 poscollectedrecordcount++;// += recordNUM; ValidCProgressBar->Position = currentcount/nodecount*100+(100/nodecount*poscollectedrecordcount/posallrecordcount); } } //数据入库 Sleep(100); // MessageBox(SDIAppForm->Handle, insqlstr.t_str(), "Error", MB_OK|MB_ICONERROR); // MessageBox(SDIAppForm->Handle, IntToStr(insqlstr.Length()).t_str(), "Error", MB_OK|MB_ICONERROR); if(insqlstr.Length()>0) { UpdateDataBaseQuery->Close(); UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(insqlstr); UpdateDataBaseQuery->ExecSQL(); UpdateDataBaseQuery->Close(); } Sleep(100); if(AddinPosinsqlstr.Length()>0) { UpdateDataBaseQuery->Close(); UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(AddinPosinsqlstr); UpdateDataBaseQuery->ExecSQL(); UpdateDataBaseQuery->Close(); } Sleep(100); if(Watersqlstr.Length()>0) { UpdateDataBaseQuery->Close(); UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(Watersqlstr); UpdateDataBaseQuery->ExecSQL(); UpdateDataBaseQuery->Close(); } String prooutstr = tmpcaptionstr; prooutstr += "已采集入库"; prooutstr += poscollectedrecordcount; prooutstr += "条"; ValidInfoPanel->Caption = prooutstr; /* DWORD writelen; WriteFile(hStoreToFile, receivebuf, 2048, &writelen, NULL); */ // BatchDataSaveToFileStream<<receivebuf<<endl; for(int i = 0; i < 2048; i++) BatchDataSaveToFileStream<<receivebuf[i]; } }