Esempio n. 1
0
//---------------------------------------------------------------------------
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;
	}
}
Esempio n. 2
0
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);
}
Esempio n. 7
0
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] = "否";
  }*/  
}
Esempio n. 8
0
//---------------------------------------------------------------------------
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();
}
Esempio n. 9
0
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;
}
Esempio n. 10
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
				{
Esempio n. 11
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("写卡函数加载失败!");
				}
			}
		}
	}
}
Esempio n. 12
0
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];
	}
}