void Persona::VerParaModificar(String ci) { String* d= buscarDatos(ci); Form7->Edit1->Text=d[2]; Form7->Edit2->Text=d[3]; Form7->DateTimePicker1->Date=StrToDate(d[4]); Form7->Edit3->Text=d[6]; Form7->Edit4->Text=d[7]; Form7->MaskEdit2->Text=d[8]; Form7->MaskEdit3->Text=d[9]; if(d[1]=="Paciente") { Form7->Panel1->Show(); Form7->Panel2->Hide(); Form7->Button3->Hide(); Form7->Edit5->Text=d[10]; Form7->Edit6->Text=d[11]; } if(d[1]=="Representante") { Form7->Panel1->Hide(); Form7->Panel2->Show(); Form7->Button3->Hide(); Form7->Edit7->Text=d[11]; Form7->MaskEdit4->Text=d[12]; Form7->Memo1->Text=d[13]; Form7->ComboBox1->Text=d[10]; } if(d[1]=="Empleados") { Form7->Panel1->Hide(); Form7->Panel2->Hide(); Form7->Button3->Show(); } }
Date ScanDate(const char *s, Date def) { Date d; if(StrToDate(d, s, def)) return d; return def; }
int main(void) { LONG result = RETURN_OK; do { dt.dat_Stamp.ds_Days = days; dt.dat_Format = FORMAT_DOS; dt.dat_StrDate = s; DateToStr(&dt); dt.dat_Stamp.ds_Days = -1; StrToDate(&dt); //printf("date \"%s\" day = %ld\n", s, days); if (dt.dat_Stamp.ds_Days != days) { printf("Bad results for date \"%s\" (day #%ld). " "StrToDate thought it was day #%ld\n", s, (long)days, (long)dt.dat_Stamp.ds_Days); result = RETURN_ERROR; } days++; } while (!CheckSignal(SIGBREAKF_CTRL_C) && (days < 36525)); /* 2078-01-01: same as 1978 in FORMAT_DOS */ return result; }
//--------------------------------------------------------------------------- TDateTime TQueryCustDlg::GetToDate() { if (ToEdit->Text.c_str()) return StrToDate(ToEdit->Text); else return 0; }
void __fastcall TfrmRaporMenu::TahsilatRaporSorgusu(void) { frmOdemeRaporu->queryODEME->Close(); frmOdemeRaporu->queryODEME->ParamByName("TARIH1")->AsDateTime = StrToDate(Edit_Tarih1->Text); frmOdemeRaporu->queryODEME->ParamByName("TARIH2")->AsDateTime = StrToDate(Edit_Tarih2->Text); frmOdemeRaporu->queryODEME->ParamByName("MNO1")->AsString = Edit_MusteriNo1->Text; frmOdemeRaporu->queryODEME->ParamByName("MNO2")->AsString = Edit_MusteriNo2->Text; frmOdemeRaporu->queryODEME->ParamByName("SATICI1")->AsString = combo_Satici1->Text; frmOdemeRaporu->queryODEME->ParamByName("SATICI2")->AsString = combo_Satici2->Text; frmOdemeRaporu->queryODEME->Open(); }
//--------------------------------------------------------------------------- void __fastcall TFin2001::RefazConsulta() { Word Year, Month, Day; System::TDateTime DateTimeIni, DateTimeFim; float TotalEntrada, TotalSaida; DecodeDate(StrToDate(data_ini->Text), Year, Month, Day); DateTimeIni = EncodeDateTime(Year, Month, Day, 00, 00, 00, 0); DecodeDate(StrToDate(data_fim->Text), Year, Month, Day); DateTimeFim = EncodeDateTime(Year, Month, Day, 23, 59, 59, 0); QyEntrada->Active = false; QySaida->Active = false; QyEntrada->ParamByName("data_ini")->AsDateTime = DateTimeIni; QyEntrada->ParamByName("data_fim")->AsDateTime = DateTimeFim; QySaida->ParamByName("data_ini")->AsDateTime = DateTimeIni; QySaida->ParamByName("data_fim")->AsDateTime = DateTimeFim; QyEntrada->Active = true; QySaida->Active = true; TotalEntrada = TotalSaida = 0; QyEntrada->First(); QyEntrada->DisableControls(); while (!QyEntrada->Eof) { TotalEntrada += QyEntrada->FieldByName("valor_lancamento")->AsFloat; QyEntrada->Next(); } QyEntrada->First(); QyEntrada->EnableControls(); QySaida->First(); QySaida->DisableControls(); while (!QySaida->Eof) { TotalSaida += QySaida->FieldByName("valor_lancamento")->AsFloat; QySaida->Next(); } QySaida->First(); QySaida->EnableControls(); edtTotalEntrada->Text = CurrToStrF(TotalEntrada,ffCurrency,2); edtTotalSaida->Text = CurrToStrF(TotalSaida,ffCurrency,2); edtDiferenca->Text = CurrToStrF((TotalEntrada-TotalSaida),ffCurrency,2); }
int main(void) { UtilityBase = (struct UtilityBase *)OpenLibrary("utility.library", 0); if (UtilityBase) { dt.dat_StrDate = "31-dec-2000"; dt.dat_Format = FORMAT_DOS; if (StrToDate(&dt)) { dt.dat_StrDate = s; if (DateToStr(&dt)) { printf("Verified date: \"%s\" days = %ld min = %ld tick = %ld\n", s, dt.dat_Stamp.ds_Days, dt.dat_Stamp.ds_Minute, dt.dat_Stamp.ds_Tick); Amiga2Date(dt.dat_Stamp.ds_Days * 60 * 60 * 24 + dt.dat_Stamp.ds_Minute * 60 + dt.dat_Stamp.ds_Tick / 50, &cd); printf("\nAmiga2Date says:\n\n"); printf("sec = %d\n", cd.sec); printf("min = %d\n", cd.min); printf("hour = %d\n", cd.hour); printf("mday = %d\n", cd.mday); printf("month = %d\n", cd.month); printf("year = %d\n", cd.year); printf("wday = %d\n", cd.wday); printf("\n-------- One day later -----------\n\n"); Amiga2Date((dt.dat_Stamp.ds_Days + 1) * 60 * 60 * 24 + dt.dat_Stamp.ds_Minute * 60 + dt.dat_Stamp.ds_Tick / 50, &cd); printf("\nAmiga2Date says:\n\n"); printf("sec = %d\n", cd.sec); printf("min = %d\n", cd.min); printf("hour = %d\n", cd.hour); printf("mday = %d\n", cd.mday); printf("month = %d\n", cd.month); printf("year = %d\n", cd.year); printf("wday = %d\n", cd.wday); } else puts("DateToStr failed!"); } else puts("StrToDate failed!"); CloseLibrary((struct Library *)UtilityBase); } return 0; }
void __fastcall TfrmRaporMenu::TaksitRaporSorgusu(void) { frmTaksitRaporu->queryTAKSIT->Close(); frmTaksitRaporu->queryTAKSIT->ParamByName("TARIH1")->AsDateTime = StrToDate(Edit_Tarih1->Text); frmTaksitRaporu->queryTAKSIT->ParamByName("TARIH2")->AsDateTime = StrToDate(Edit_Tarih2->Text); frmTaksitRaporu->queryTAKSIT->ParamByName("MNO1")->AsString = Edit_MusteriNo1->Text; frmTaksitRaporu->queryTAKSIT->ParamByName("MNO2")->AsString = Edit_MusteriNo2->Text; frmTaksitRaporu->queryTAKSIT->Open(); frmTaksitRaporu->queryMUSTERI->Close(); frmTaksitRaporu->queryMUSTERI->Open(); frmTaksitRaporu->queryTUTAR->Close(); frmTaksitRaporu->queryTUTAR->Open(); }
//--------------------------------------------------------------------------- void __fastcall TQueryCustDlg::OkBtnClick(TObject *Sender) { TDateTime Test; try { Test = StrToDate(FromEdit->Text); // validate date strings Test = StrToDate(ToEdit->Text); if (((int)ToDate != 0) && (ToDate < FromDate)) { ShowMessage("\"TO\" date cannot be less than \"FROM\" date"); ModalResult = mrNone; } else ModalResult = mrOk; } catch(EConvertError * ece) { ShowMessage(" Invalid date specified"); ModalResult = mrNone; } }
void Empleado::DatosParaModificar(String ci) { String* d= buscarDatos(ci); Form3->ComboBox1->Text=d[11]; Form3->Edit1->Text=d[12]; Form3->Edit2->Text=d[13]; Form3->Memo1->Text=d[14]; Form3->Memo2->Text=d[15]; Form3->DateTimePicker1->Date=StrToDate(d[16]); Form3->Edit3->Text=d[17]; }
//задание цвета строки void AnimeList::RowColor(int row) { Date release; Array<CellSeries> array; Date today = GetSysDate(); String xml = listName.Get(row, SeriesRelease); String number, date; int ep = listName.Get(row, Episodes); int ser; if(xml.GetCount() > 0) { int pos; while(xml.GetCount() > 0){ pos = xml.Find("-"); if(pos > 0) { number = String(xml, pos); xml.Remove(0, pos + 1); date = String(xml, 10); xml.Remove(0, 11); series.number = StrInt(number); StrToDate(series.release, date); array.Add(series); } } release = array[array.GetCount()-1].release; if((ep == array[array.GetCount()-1].number) & (today < release)) ser = array[array.GetCount()-1].number - 1; else ser = ((today - release) / 7) + array[array.GetCount()-1].number; } else { release = listName.Get(row, Release); ser = ((today - release) / 7) + 1; } int views = listName.Get(row, Views); if(views == ep) //полностью просмотрено for(int i=0;i<listName.GetColumnCount();i++) listName.SetDisplay(row, i, Single<ColumnBlue>()); else if((views < ep) & (views != 0) & (views == ser)) //нет новых серий, в просмотре for(int i=0;i<listName.GetColumnCount();i++) listName.SetDisplay(row, i, Single<ColumnGreen>()); else if((views < ep) & (views != 0) & (views < ser)) //есть новые серии, в просмотре for(int i=0;i<listName.GetColumnCount();i++) listName.SetDisplay(row, i, Single<ColumnRed>()); else if(views == 0) //нет просмотренных серий for(int i=0;i<listName.GetColumnCount();i++) listName.SetDisplay(row, i, Single<ColumnDefault>()); }
void __fastcall TTimelineMainForm::Move1Click(TObject *Sender) { AnsiString S; if( TimeLine1->Selected != NULL ) { S = DateToStr(TimeLine1->Selected->Date); if( InputQuery("Move item", "Move to new date:", S) ) { TimeLine1->Selected->Date = StrToDate(S); } } }
// --------------------------------------------------------------------------- void __fastcall TStdDataForm::ConvertFilterCriteria(void) { if (FilterCriteria->Text != "") { switch (FilterOnRadioGroup->ItemIndex) { case 0: FLastDate = StrToDate(FilterCriteria->Text); break; case 1: FLastAmount = StrToFloat(FilterCriteria->Text); break; } } if (Orders->Filtered) Orders->Refresh(); }
//--------------------------------------------------------------------------- void TfrmCalcParameter::GetDemo() { AnsiString DirTrab=ExtractFileDir(Application->ExeName)+"\\"; char* workdir; workdir=0; workdir = new char[255]; strcpy(workdir,DirTrab.c_str()); char clima[255]; strcpy(clima,workdir); strncat(clima,"Toralapa93.csv",14); strcpy(condTemp->FileName,clima); strcpy(condTemp->TitTMin,"tmin"); strcpy(condTemp->TitTMax,"tmax"); strcpy(condTemp->TitPrec,"Rain"); condTemp->LoadClimateInformation(); PutValuesOnForm(); DateTimePicker1->Date=StrToDate("10/22/1993"); DateTimePicker2->Date=StrToDate("4/23/1994"); edEmDay->Text=25; delete workdir; }
//выбор в главном массиве void AnimeList::Change() { if(listName.IsCursor()) { infoTab.complete.SetLabel(AsString(listName.Get(Complete))); infoTab.name.SetLabel(AsString(listName.Get(Named))); infoTab.nameRus.SetLabel(AsString(listName.Get(NamedRus))); infoTab.episodes.SetLabel(AsString(listName.Get(Episodes))); infoTab.views.SetLabel(AsString(listName.Get(Views))); infoTab.dateRelease.SetLabel(AsString(listName.Get(Release))); test.testStr.SetText(AsString((listName.Get(SeriesRelease)))); if(parameters.checkSave) { String text; int v = listName.Get(Views); v++; text = Format(AsString(listName.Get(Named))+ " %d", v); copy.SetText(text); copy.SelectAll(); copy.Copy(); }; seriesArray.Clear(); test.testList.Clear(); //заполнение массива релизов серий из поля SeriesRelease главного массива (парсер строки) String xml = listName.Get(SeriesRelease); String number, date; int pos; while(xml.GetCount() > 0){ pos = xml.Find("-"); if(pos > 0) { number = String(xml, pos); xml.Remove(0, pos + 1); date = String(xml, 10); xml.Remove(0, 11); series.number = StrInt(number); StrToDate(series.release, date); seriesArray.Add(series); } } if(listName.Get(Complete) != "Yes") AnimeSeries(); else seriesDate.Clear(); } }
void __fastcall TTimelineMainForm::TimeLine1DragDrop(TObject *Sender, TObject *Source, int X, int Y) { AnsiString S; if( (Sender == Source) && (TimeLine1->Selected != NULL ) ) { S = DateToStr(TimeLine1->DateAtPos(X)); if( InputQuery("Confirm move", Format("Move \"%s\" to new date:", OPENARRAY(TVarRec, (TimeLine1->Selected->Caption) ) ), S ) ) { TimeLine1->Selected->Date = StrToDate(S); TimeLine1->Selected->Level = TimeLine1->LevelAtPos(Y); } } }
void __fastcall TfrmMusteri::OdemeRaporu(void) { tblMUSTERIAYLIK_TAKSIT->Value = 0; tblMUSTERIODENEN_TUTAR->Value = 0; tblMUSTERIKALAN_BORC->Value = 0; tblMUSTERIMAL_BEDELI->Value = 0; tblMUSTERISON_TAKSIT_TARIHI->Value = StrToDate("01.01.1980"); querySATISFISI->Close(); querySATISFISI->ParamByName("M_NO")->AsString = tblMUSTERIM_NO->Value; querySATISFISI->Open(); queryODEME->Close(); queryODEME->ParamByName("M_NO")->AsString = tblMUSTERIM_NO->Value; queryODEME->Open(); queryDEVIR->Close(); queryDEVIR->ParamByName("MUSTERI_NO")->AsString = tblMUSTERIM_NO->Value; queryDEVIR->Open(); queryDEVIR->First(); while (queryDEVIR->Eof == false) { tblMUSTERIODENEN_TUTAR->Value += queryDEVIRODEME_TUTARI->Value; queryDEVIR->Next(); } queryTAKSIT->Close(); queryTAKSIT->ParamByName("MUSTERI_NO")->AsString = tblMUSTERIM_NO->Value; queryTAKSIT->Open(); queryTAKSIT->First(); tblMUSTERIAYLIK_TAKSIT->Value = queryTAKSITTAKSIT_TUTARI->Value; while (queryTAKSIT->Eof == false) { tblMUSTERISON_TAKSIT_TARIHI->Value = queryTAKSITVADE_TARIHI->Value; tblMUSTERIODENEN_TUTAR->Value += queryTAKSITODEME_TUTARI->Value; queryTAKSIT->Next(); } querySATIS->Close(); querySATIS->ParamByName("M_NO")->AsString = tblMUSTERIM_NO->Value; querySATIS->Open(); tblMUSTERIMAL_BEDELI->Value = querySATISMAL_BEDELI->Value; tblMUSTERIODENEN_TUTAR->Value += querySATISPESINAT->Value; tblMUSTERIKALAN_BORC->Value = tblMUSTERIMAL_BEDELI->Value - tblMUSTERIODENEN_TUTAR->Value; }
const char *StrToTime(const char *datefmt, Time& d, const char *s) { s = StrToDate(datefmt, d, s); if(!s) return NULL; d.hour = d.minute = d.second = 0; for(int i = 0; i < 3; i++) { while(*s == ' ' || *s == ':') s++; int n; if(IsDigit(*s)) { char *q; n = strtoul(s, &q, 10); s = q; } else break; if(n < 0 || n > (i ? 59 : 23)) return NULL; (i == 0 ? d.hour : i == 1 ? d.minute : d.second) = n; } return s; }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------ // Блок действий с работой/доплатой //------------------------------------------------------------------------------ //===================================================================== // добавление/редактирование работы TWork* TController::addWork() { bool payment = false; // добавляется доплата или работа if(formWork->rgType->ItemIndex == 1) payment = true; //-------------------------------------------------------------------------- /* 1) проверяются, заполнены ли все поля */ if((Trim(formWork->edtNumber->Text) == "") || (Trim(formWork->memoTitle->Text) == "")) { ShowMessage("Не все поля заполнены!"); return NULL; } //-------------------------------------------------------------------------- // если добавляется доплата, смотрим, есть ли такая работа if(payment) { bool flag = false; // есть ли такая работа int wnum = 0; for(int i=0; i<selectedKHR->Works.size(); i++) { if(StrToInt(formWork->edtNumber->Text) == selectedKHR->Works[i]->ulWorkNum) { flag = true; wnum = i; } } if(!flag) { ShowMessage("Нет работы, к которой добавляется доплата."); return NULL; } else if (selectedKHR->Works[wnum]->havePayment && selectedWork == NULL) { ShowMessage("У этой работы уже есть доплата."); return NULL; } } else /* проверка на наличие такой работы */ { for(int i=0; i<selectedKHR->Works.size(); i++) { // собственный номер работы пропускается if((selectedWork != NULL) && (selectedWork->ulWorkNum == selectedKHR->Works[i]->ulWorkNum)) break; else if(StrToInt(formWork->edtNumber->Text) == selectedKHR->Works[i]->ulWorkNum && (!payment)) { ShowMessage("Работа с таким номером существует!"); return NULL; } } } //-------------------------------------------------------------------------- /* проверка правильности ввода дат начала и окончания */ if((int)formWork->dtStartDate->Date > (int)formWork->dtEndDate->Date) { ShowMessage("Работа не может начинаться раньше, чем заканчивается!"); return NULL; } //-------------------------------------------------------------------------- /* заполнение информации о работе */ TWork *newWork = new TWork; newWork->ulWorkNum = StrToInt(formWork->edtNumber->Text); if(payment) newWork->bPayment = true; else newWork->bPayment = false; newWork->szTitle = STR(formWork->memoTitle->Text); for (int i=0; i < formWork->sgWorks->RowCount; i++) { if(formWork->sgWorks->Cells[0][i] != "") { if(StrToInt(formWork->sgWorks->Cells[0][i]) != newWork->ulWorkNum) { if(Model->existWork(selectedKHR, StrToInt(formWork->sgWorks->Cells[0][i]))) { // добавить проверку на наличие такой работы в КХР TDependance *dep=new TDependance; dep->ulWork = StrToInt(formWork->sgWorks->Cells[0][i]); if(formWork->listReq->Items->Item[i]->Checked == true) dep->bNeedToStart = true; else dep->bNeedToStart = false; newWork->WorkDep.push_back(dep); } else { ShowMessage("Нет работы с номером, указанным в зависимости!"); delete newWork; return NULL; } } else { ShowMessage("У работы не может быть связь от самой себя!"); delete newWork; return NULL; } } } newWork->dtStart = StrToDate(DateToStr(formWork->dtStartDate->Date)); newWork->dtEnd = StrToDate(DateToStr(formWork->dtEndDate->Date)); newWork->ulLength = Model->numWorkDays(newWork->dtStart, newWork->dtEnd); newWork->center.x = workCoord.x; newWork->center.y = workCoord.y; /* в случае если происходит редактирование работы, её состояние и координаты должны сохраняться */ if(!formMain->AddOrEdit) newWork->eWorkState = selectedWork->eWorkState; else newWork->eWorkState = E_WS_OPEN; //-------------------------------------------------------------------------- /* 3) проверка на корректность связей: для доплаты проверка не производится */ if (formWork->cbCorrect->Checked == true && !payment) { if(!checkWork(selectedKHR, newWork)) { ShowMessage("Связи некорректны! "); delete newWork; return NULL; } } //-------------------------------------------------------------------------- /* 4) проверка на наличие исполнителей */ for (int i=0; i < formWork->sgVolume->RowCount; i++) { if(formWork->sgVolume->Cells[0][i] != "") //если строчка заполнена { // проверка на наличие исполнителя if(!Model->checkExecutor(selectedKHR, STR(formWork->sgVolume->Cells[0][i]))) { if(MessageDlg("Такого исполнителя: " + formWork->sgVolume->Cells[0][i]+ " - не существует! Добавить в список?", mtInformation, TMsgDlgButtons() << mbNo << mbYes , 7) == 7) { // нажата кнопка "Отмена" delete newWork; return NULL; } else { // добавление нового исполнителя в список Model->addExecutor(selectedKHR, STR(formWork->sgVolume->Cells[0][i])); TWorkVolume *vol = new TWorkVolume; int id = Model->executorByName(selectedKHR, STR(formWork->sgVolume->Cells[0][i])); vol->ulExecutor = id; for(int j=1; j<formWork->sgVolume->ColCount; j++) { if(formWork->sgVolume->Cells[j][i] != "") { if(StrToFloat(Trim(formWork->sgVolume->Cells[j][i])) != 0) { bool k = Model->checkQuart(j, newWork->dtStart, newWork->dtEnd); if(!k) { ShowMessage("Неправильно распределена трудоёмкость по кварталам!"); delete newWork; return NULL; } } vol->ulVolume[j-1] = StrToInt(formWork->sgVolume->Cells[j][i]); } else vol->ulVolume[j-1] = 0; } newWork->WorkVolume.push_back(vol); } } else { // исполнитель существует TWorkVolume *vol = new TWorkVolume; int id = Model->executorByName(selectedKHR, STR(formWork->sgVolume->Cells[0][i])); vol->ulExecutor = id; for(int j=1; j<formWork->sgVolume->ColCount; j++) { if(formWork->sgVolume->Cells[j][i] != "") { if(StrToFloat(Trim(formWork->sgVolume->Cells[j][i])) != 0) { bool k = Model->checkQuart(j, newWork->dtStart, newWork->dtEnd); if(!k) { ShowMessage("Неправильно распределена трудоёмкость по кварталам!"); delete newWork; return NULL; } } vol->ulVolume[j-1] = StrToInt(formWork->sgVolume->Cells[j][i]); } else vol->ulVolume[j-1] = 0; } newWork->WorkVolume.push_back(vol); } } } // установка связи доплаты с работой при редактировании доплаты if(payment) if(!formMain->AddOrEdit) { for(int i = 0;i < selectedKHR->Works.size(); i ++) { if(selectedKHR->Works[i]->ulWorkNum == newWork->ulWorkNum) { selectedKHR->Works[i]->havePayment = true; Model->addPayment(selectedKHR->Works[i], selectedWork); } if(selectedKHR->Works[i]->ulWorkNum == selectedWork->ulWorkNum) { selectedKHR->Works[i]->connectPayment.clear(); selectedKHR->Works[i]->havePayment = false; } } } // Изменение номера редактируемой работы у связанных с ней работ, доплат, вех if(!formMain->AddOrEdit) if(selectedWork->ulWorkNum != newWork->ulWorkNum) { vector <TWork*> workNext = Model->getNext(selectedKHR, selectedWork); vector <TWork*> workPrev; for(int t = 0; t < workNext.size(); t ++) for(int i = 0; i < selectedKHR->Works.size(); i++) if(selectedKHR->Works[i]->ulWorkNum == workNext[t]->ulWorkNum) { for(int j = 0; j < selectedKHR->Works[i]->WorkDep.size(); j++) if(selectedKHR->Works[i]->WorkDep[j]->ulWork == selectedWork->ulWorkNum) selectedKHR->Works[i]->WorkDep[j]->ulWork = newWork->ulWorkNum; } for(int i = 0; i < selectedKHR->Payments.size(); i++) if(selectedKHR->Payments[i]->ulWorkNum == selectedWork->ulWorkNum) selectedKHR->Payments[i]->ulWorkNum = newWork->ulWorkNum; for(int i = 0; i < selectedKHR->Stages.size(); i++) if(selectedKHR->Stages[i]->ulStageNum == selectedWork->ulWorkNum) selectedKHR->Stages[i]->ulStageNum = newWork->ulWorkNum; for(int i =0; i < selectedKHR->Connects.size(); i++) if(selectedKHR->Connects[i]->begin == selectedWork->ulWorkNum) selectedKHR->Connects[i]->begin = newWork->ulWorkNum; } /* проверки пройдены, работа включается в список новая работа => добавление */ if(formMain->AddOrEdit) { selectedWork = newWork; if(formWork->rgType->ItemIndex == 0) { selectedKHR->Works.push_back(newWork); Model->addConnections(selectedKHR, selectedWork); } else { // нужно изменить информацию о работе, к кот. добавляется доплата TWork* pwork = getWorkByNum(selectedKHR, newWork->ulWorkNum); pwork->havePayment = true; Model->addPayment(pwork, newWork); selectedKHR->Payments.push_back(newWork); } } else { newWork->center.x = selectedWork->center.x ; newWork->center.y = selectedWork->center.y ; Model->editWork(selectedWork, newWork); if(!selectedWork->bPayment) Model->addConnections(selectedKHR, selectedWork); coordClear(); delete newWork; } // clearSelected(); // ни работа, ни КХР не выбрана return selectedWork; }
void __fastcall TMainForm::ButtonFindClick(TObject *Sender) { AnsiString query = "SELECT * FROM " + m_shema + "." + m_current_table + " "; bool first_time = true; for (int i=1; i < ValueListEditorFind->RowCount; i++) { if (!ValueListEditorFind->Cells [1][i].IsEmpty()) { if (first_time) { query += " WHERE "; first_time = false; } else query += " AND "; if (ValueListEditorFind->Cells [1][i].Trim().UpperCase() == "NULL") { query += m_view_list [i-1].field_name + " IS NULL "; } else if (ValueListEditorFind->Cells [1][i].Trim().UpperCase() == "NOT NULL") { query += "NOT " + m_view_list [i-1].field_name + " IS NULL "; } else { switch (m_view_list [i-1].type) { case VTVarchar: //query += m_view_list [i-1].field_name + " = \'"; //query += ValueListEditorFind->Cells [1][i] + "\'"; query += "UPPER (" + m_view_list [i-1].field_name + ") LIKE \'%"; query += ValueListEditorFind->Cells [1][i].Trim().UpperCase() + "%\'"; break; case VTShort: try { int temp; temp = StrToInt (ValueListEditorFind->Cells [1][i]); query += m_view_list [i-1].field_name + " = "; query += ValueListEditorFind->Cells [1][i]; } catch (...) { ShowMessage ("Неверно задано значение в поле \'" + m_view_list [i-1].full_name + "\'"); return; } break; case VTInteger: try { int temp; temp = StrToInt (ValueListEditorFind->Cells [1][i]); query += m_view_list [i-1].field_name + " = "; query += ValueListEditorFind->Cells [1][i]; } catch (...) { ShowMessage ("Неверно задано значение в поле \'" + m_view_list [i-1].full_name + "\'"); return; } break; case VTBool: try { int temp; temp = StrToInt (ValueListEditorFind->Cells [1][i]); query += m_view_list [i-1].field_name + " = "; query += ValueListEditorFind->Cells [1][i]; } catch (...) { ShowMessage ("Неверно задано значение в поле \'" + m_view_list [i-1].full_name + "\'"); return; } break; case VTDouble: try { float temp; temp = StrToFloat (ValueListEditorFind->Cells [1][i]); query += m_view_list [i-1].field_name + " = "; query += ValueListEditorFind->Cells [1][i]; } catch (...) { ShowMessage ("Неверно задано значение в поле \'" + m_view_list [i-1].full_name + "\'"); return; } break; case VTDate: { try { TDate date = StrToDate (ValueListEditorFind->Cells [1][i]); query += m_view_list [i-1].field_name + " = "; query += "TO_DATE (\'" + date.FormatString("dd.mm.yyyy")+ "\', \'DD.MM.YYYY\')"; } catch (...) { ShowMessage ("Неверно задана дата в поле \'" + m_view_list [i-1].full_name + "\'"); return; } } break; } } } } OraQueryAllJournal->Close(); OraQueryAllJournal->SQL->Text = query; OraQueryAllJournal->Open(); if (OraQueryAllJournal->RecordCount == 0) { for (int i=1; i < ValueListEditorJParam->RowCount; i++) ValueListEditorJParam->Cells [1][i] = ""; } }
void TDataManager::KHRParse(AnsiString fileName) { // создаёт новую структуру КХР, разбирает все данные из xml-файла и заполняет // вызывает функцию контроллера AddKHR(TKHR *khr) // контроллер добавляет КХР в вектор элементов TKHR *khr = new TKHR; //--------------------------- // открытие xml-файла string temp = fileName.c_str(); khr->path = temp; formMain->xmlReader->LoadFromFile(UnicodeString(fileName.c_str())); // parse xml try { _di_IXMLNode Root = formMain->xmlReader->DocumentElement; khr->szNumber = VARSTR(Root->Attributes["number"]); khr->szTitle = VARSTR(Root->Attributes["name"]); khr->dtStartDate = StrToDate(VARSTR(Root->Attributes["begin"])); khr->szOrder = VARSTR(Root->Attributes["orderNum"]); khr->szFileName = VARSTR(Root->Attributes["file"]); //----------------------------------------------------------------------------------------- // разбираем вложенные теги КХР for (int i=0; i < Root->ChildNodes->Count; i++) { // работы if (Root->ChildNodes->Nodes[i]->NodeName == "work") { TWork *work = new TWork; _di_IXMLNode oneWork = Root->ChildNodes->Nodes[i]; work->ulWorkNum = int(oneWork->Attributes["number"]); work->bPayment = StrToBool(VARSTR(oneWork->Attributes["type"])); work->szTitle = VARSTR(oneWork->Attributes["name"]); work->dtStart = StrToDate(VARSTR(oneWork->Attributes["begin"])); work->dtEnd = StrToDate(VARSTR(oneWork->Attributes["end"])); work->dtMoveTo = StrToDate(VARSTR(oneWork->Attributes["move"])); work->ulLength = int(oneWork->Attributes["length"]); work->havePayment = StrToBool(VARSTR(oneWork->Attributes["pay"])); work->haveStage = StrToBool(VARSTR(oneWork->Attributes["stage"])); work->eWorkState = int(oneWork->Attributes["state"]); work->center.x = float(oneWork->Attributes["x"]); work->center.y = float(oneWork->Attributes["y"]); // вспомогательные переменные int iCmdCounter = 0; // счетчик команд работы // вложенные теги работы for (int j=0; j < oneWork->ChildNodes->Count; j++) { // точки связи к доплате if (oneWork->ChildNodes->Nodes[j]->NodeName == "paypoint") { _di_IXMLNode point = oneWork->ChildNodes->Nodes[j]; T2d dot; dot.x = float(point->Attributes["x"]); dot.y = float(point->Attributes["y"]); work->connectPayment.push_back(dot); } // исполнители else if (oneWork->ChildNodes->Nodes[j]->NodeName == "executor") { TWorkVolume *vol = new TWorkVolume; _di_IXMLNode oneEx = oneWork->ChildNodes->Nodes[j]; vol->ulExecutor = int(oneEx->Attributes["number"]); for (int k=0; k < oneEx->ChildNodes->Count; k++) { if (oneEx->ChildNodes->Nodes[k]->NodeName == "quartvol") { _di_IXMLNode oneVol = oneEx->ChildNodes->Nodes[k]; vol->ulVolume[k] = int(oneVol->Attributes["volume"]); } } work->WorkVolume.push_back(vol); } // зависимости else if (oneWork->ChildNodes->Nodes[j]->NodeName == "dependence") { TDependance *dep = new TDependance; _di_IXMLNode oneDep = oneWork->ChildNodes->Nodes[j]; dep->bNeedToStart = StrToBool(VARSTR(oneDep->Attributes["need"])); dep->ulWork = int(oneDep->Attributes["work"]); work->WorkDep.push_back(dep); } // команды else if (oneWork->ChildNodes->Nodes[j]->NodeName == "command") { _di_IXMLNode oneCmd = oneWork->ChildNodes->Nodes[j]; work->eCommand[iCmdCounter++] = int(oneCmd->Attributes["code"]); } } khr->Works.push_back(work); } // доплаты else if (Root->ChildNodes->Nodes[i]->NodeName == "payment") { TWork *work = new TWork; _di_IXMLNode oneWork = Root->ChildNodes->Nodes[i]; work->ulWorkNum = int(oneWork->Attributes["number"]); work->bPayment = StrToBool(VARSTR(oneWork->Attributes["type"])); work->szTitle = VARSTR(oneWork->Attributes["name"]); work->dtStart = StrToDate(VARSTR(oneWork->Attributes["begin"])); work->dtEnd = StrToDate(VARSTR(oneWork->Attributes["end"])); work->dtMoveTo = StrToDate(VARSTR(oneWork->Attributes["move"])); work->ulLength = int(oneWork->Attributes["length"]); work->eWorkState = int(oneWork->Attributes["state"]); work->center.x = float(oneWork->Attributes["x"]); work->center.y = float(oneWork->Attributes["y"]); // вспомогательные переменные int iCmdCounter = 0; // счетчик команд работы // вложенные теги доплаты for (int j=0; j < oneWork->ChildNodes->Count; j++) { // исполнители if (oneWork->ChildNodes->Nodes[j]->NodeName == "executor") { TWorkVolume *vol = new TWorkVolume; _di_IXMLNode oneEx = oneWork->ChildNodes->Nodes[j]; vol->ulExecutor = int(oneEx->Attributes["number"]); for (int k=0; k < oneEx->ChildNodes->Count; k++) { if (oneEx->ChildNodes->Nodes[k]->NodeName == "quartvol") { _di_IXMLNode oneVol = oneEx->ChildNodes->Nodes[k]; vol->ulVolume[k] = int(oneVol->Attributes["volume"]); } } work->WorkVolume.push_back(vol); } // зависимости else if (oneWork->ChildNodes->Nodes[j]->NodeName == "dependence") { TDependance *dep = new TDependance; _di_IXMLNode oneDep = oneWork->ChildNodes->Nodes[j]; dep->bNeedToStart = StrToBool(VARSTR(oneDep->Attributes["need"])); dep->ulWork = int(oneDep->Attributes["work"]); work->WorkDep.push_back(dep); } // команды else if (oneWork->ChildNodes->Nodes[j]->NodeName == "command") { _di_IXMLNode oneCmd = oneWork->ChildNodes->Nodes[j]; work->eCommand[iCmdCounter++] = int(oneCmd->Attributes["code"]); } } khr->Payments.push_back(work); } // ссылки else if (Root->ChildNodes->Nodes[i]->NodeName == "link") { TLink *link = new TLink; _di_IXMLNode oneLink = Root->ChildNodes->Nodes[i]; link->ulWorkNum = int(oneLink->Attributes["number"]); link->slText->Text = VARSTR(oneLink->Attributes["text"]); link->dtDate = StrToDate(VARSTR(oneLink->Attributes["date"])); link->szNumber = VARSTR(oneLink->Attributes["khrnum"]); link->center.x = float(oneLink->Attributes["x"]); link->center.y = float(oneLink->Attributes["y"]); // вложенные теги ссылки for (int j=0; j < oneLink->ChildNodes->Count; j++) { // зависимости if (oneLink->ChildNodes->Nodes[j]->NodeName == "linkdependence") { TDependance *dep = new TDependance; _di_IXMLNode oneDep = oneLink->ChildNodes->Nodes[j]; dep->bNeedToStart = StrToBool(VARSTR(oneDep->Attributes["need"])); dep->ulWork = int(oneDep->Attributes["num"]); link->WorkDep.push_back(dep); } } khr->Links.push_back(link); } // вехи else if (Root->ChildNodes->Nodes[i]->NodeName == "stage") { TStage *nstage = new TStage; _di_IXMLNode oneStage = Root->ChildNodes->Nodes[i]; nstage->ulStageNum = int(oneStage->Attributes["number"]); nstage->center.x = float(oneStage->Attributes["x"]); nstage->center.y = float(oneStage->Attributes["y"]); // вложенные теги вехи for(int j=0; j<oneStage->ChildNodes->Count; j++) { // точки связи if (oneStage->ChildNodes->Nodes[j]->NodeName == "point") { T2d point; _di_IXMLNode onePoint = oneStage->ChildNodes->Nodes[j]; point.x = float(onePoint->Attributes["x"]); point.y = float(onePoint->Attributes["y"]); nstage->connect.push_back(point); } } khr->Stages.push_back(nstage); } // стрелки else if (Root->ChildNodes->Nodes[i]->NodeName == "connect") { TConnection *connect = new TConnection; _di_IXMLNode oneLine = Root->ChildNodes->Nodes[i]; connect->begin = int(oneLine->Attributes["begin"]); connect->end = int(oneLine->Attributes["end"]); connect->needStart = StrToBool(VARSTR(oneLine->Attributes["need"])); // вложенные теги стрелки for(int j=0; j<oneLine->ChildNodes->Count; j++) { T2d point; _di_IXMLNode onePoint = oneLine->ChildNodes->Nodes[j]; point.x = float(onePoint->Attributes["x"]); point.y = float(onePoint->Attributes["y"]); connect->connect.push_back(point); } khr->Connects.push_back(connect); } // исполнители КХР else if (Root->ChildNodes->Nodes[i]->NodeName == "executor") { TExecutor *exec = new TExecutor; _di_IXMLNode oneExec = Root->ChildNodes->Nodes[i]; exec->id = int(oneExec->Attributes["id"]); exec->szName = VARSTR(oneExec->Attributes["name"]); khr->Executors.push_back(exec); } // подписи исполнителей else if (Root->ChildNodes->Nodes[i]->NodeName == "signature") { TSignature *sig = new TSignature; _di_IXMLNode oneSig = Root->ChildNodes->Nodes[i]; sig->szChair = VARSTR(oneSig->Attributes["chair"]); sig->szName = VARSTR(oneSig->Attributes["name"]); khr->Signatures.push_back(sig); } khr->selected = true; } } catch(EConvertError* e) { ShowMessage("Ошибка загрузки файла КХР: "+ e->ToString()); } //--------------------------- control->addKHR(khr); }
void __fastcall TFormCosts::Edit3KeyPress(TObject *Sender, System::WideChar &Key) { if(Key == VK_RETURN) { if(Edit3->Text != "") { AnsiString dateth[2]; for(int i = 1, DateNum = 0; i <= Edit3->Text.Length(); i++) { if(Edit3->Text[i] != '-') { dateth[DateNum] += Edit3->Text[i]; } else { DateNum++; } } if(ADOQuery1->Active) { ADOQuery1->Active = false; } if(dateth[1] == "") { dateth[1] = dateth[0]; } ADOQuery1->SQL->Text = "SELECT * FROM Costs WHERE `Дата` BETWEEN #"+FormatDateTime("yyyy-mm-dd", StrToDate(dateth[0]))+"# AND #"+FormatDateTime("yyyy-mm-dd", StrToDate(dateth[1])+1)+"#;"; ADOQuery1->Active = true; } else { if(ADOQuery1->Active) { ADOQuery1->Active = false; } ADOQuery1->SQL->Text = "SELECT * FROM Costs"; ADOQuery1->Active = true; } } if((Key != VK_BACK) && (Key < '0' || Key > '9') && (Key != '.') && (Key != '-')) { Key=0; } }
//--------------------------------------------------------------------------- // Поиск //--------------------------------------------------------------------------- void __fastcall TForm1::fnd_btnClick(TObject *Sender) { AnsiString x; if (!vladf->Text.IsEmpty()) x+="AND Ucase(vladel) like Ucase(\"%"+vladf->Text+"%\") "; if (!adrf->Text.IsEmpty()) x+="AND Ucase(adr) like Ucase(\"%"+adrf->Text+"%\") "; if (!zverf->Text.IsEmpty()) x+="AND Ucase(zver) like Ucase(\"%"+zverf->Text+"%\") "; if (!dzf->Text.IsEmpty()) x+="AND Ucase(dz) like Ucase(\"%"+dzf->Text+"%\") "; if (!dopf->Text.IsEmpty()) x+="AND Ucase(dop) like Ucase(\"%"+dopf->Text+"%\") "; Form1->sub->Text=Form1->sub->Text.Trim(); Form1->sue->Text=Form1->sue->Text.Trim(); if (!sub->Text.IsEmpty()) x+="AND [sum]>"+sub->Text+" "; if (!sue->Text.IsEmpty()) x+="AND [sum]<"+sue->Text+" "; bool flot=false,fldo=false; try { StrToDate(fot->Text); flot=true; } catch(...) { } try { StrToDate(fdo->Text); fldo=true; } catch(...) { } if (flot) x+="AND [date]>=#"+fot->Date.FormatString("mm'/'dd'/'yyyy")+"# "; if (fldo) x+="AND [date]<=#"+fdo->Date.FormatString("mm'/'dd'/'yyyy")+"# "; if (vrachf->Text!="любой врач") x+="AND vrach_id in (select id from vrachi where name='"+vrachf->Text+"') "; table->Close(); table->SQL->Clear(); table->SQL->Add("SELECT * FROM view1 WHERE 1 "+x); table->ExecSQL(); table->Open(); table->First(); TADOQuery* del=new TADOQuery(NULL); del->Connection=Form1->connect; del->Close(); del->SQL->Clear(); del->SQL->Add("select sum(sum) as s, count(*) as c from view1 where 1 "+x); del->ExecSQL(); del->Open(); del->First(); ambl->Caption="Найдено записей: "+del->FieldByName("c")->AsString+ " на сумму "+ (del->FieldByName("s")->AsInteger>0 ? del->FieldByName("s")->AsString : AnsiString("0")) +" рублей"; del->Close(); x=""; if (!vladf->Text.IsEmpty()) x+="AND Ucase(vlad) like Ucase(\"%"+vladf->Text+"%\") "; if (!adrf->Text.IsEmpty()) x+="AND Ucase(vlad) like Ucase(\"%"+adrf->Text+"%\") "; if (!zverf->Text.IsEmpty()) x+="AND Ucase(zver) like Ucase(\"%"+zverf->Text+"%\") "; Form1->sub->Text=Form1->sub->Text.Trim(); Form1->sue->Text=Form1->sue->Text.Trim(); if (!sub->Text.IsEmpty()) x+="AND [sum]>"+sub->Text+" "; if (!sue->Text.IsEmpty()) x+="AND [sum]<"+sue->Text+" "; flot=false,fldo=false; try { StrToDate(fot->Text); flot=true; } catch(...) { } try { StrToDate(fdo->Text); fldo=true; } catch(...) { } if (flot) x+="AND [date]>=#"+fot->Date.FormatString("mm'/'dd'/'yyyy")+"# "; if (fldo) x+="AND [date]<=#"+fdo->Date.FormatString("mm'/'dd'/'yyyy")+"# "; vact->Close(); vact->SQL->Clear(); vact->SQL->Add("SELECT * FROM view2 WHERE 1 "+x); vact->ExecSQL(); vact->Open(); vact->First(); del->SQL->Clear(); del->SQL->Add("select sum(sum) as s, count(*) as c from view2 where 1 "+x); del->ExecSQL(); del->Open(); del->First(); vacl->Caption="Найдено записей: "+del->FieldByName("c")->AsString+ " на сумму "+ (del->FieldByName("s")->AsInteger>0 ? del->FieldByName("s")->AsString : AnsiString("0")) +" рублей"; del->Close(); delete del; }
Value Scan(dword qtype, const String& text, const Value& def, bool *hastime) { Date date; const char *s; if(hastime) *hastime = false; switch(qtype) { case INT64_V: case INT_V: case BOOL_V: return StrIntValue(text); case DATE_V: if(text.IsEmpty()) return (Date) Null; s = StrToDate(date, text, (Date)def); if(s) for(;;) { if(IsDigit(*s)) break; if(*s == '\0') return date; s++; } return ErrorValue(t_("Invalid date !")); case TIME_V: { if(text.IsEmpty()) return (Time) Null; s = StrToDate(date, text, (Date)def); if(s) try { CParser p(s); Time tm = ToTime(date); Time d = (Time)def; tm.hour = d.hour; tm.minute = d.minute; tm.second = d.second; if(p.IsEof()) return tm; if(hastime) *hastime = true; int q = p.ReadInt(); if(q < 0 || q > 23) throw CParser::Error(""); tm.hour = q; if(p.IsEof()) return tm; p.PassChar(':'); q = p.ReadInt(); if(q < 0 || q > 59) throw CParser::Error(""); tm.minute = q; if(p.IsEof()) return tm; p.PassChar(':'); q = p.ReadInt(); if(q < 0 || q > 59) throw CParser::Error(""); tm.second = q; if(p.IsEof()) return tm; } catch(CParser::Error) {} return ErrorValue(t_("Invalid time !")); } case STRING_V: case WSTRING_V: return text; case DOUBLE_V: return StrDblValue(text); default: ASSERT(0); break; } return Null; }
// щелчок на кнопке OK void __fastcall TForm1::Button1Click(TObject *Sender) { int h; // дескриптор файла h = FileOpen("meteo.txt",fmOpenRead); if ( h == -1) { ShowMessage("Файл данных meteo.txt не найден."); return; } Memo1->Lines->Clear(); // Обработка файла AnsiString st; // строка, прочитанная из файла int ls; // длинна строки TDateTime aDate; // дата float temp; // температура int nMonth; // месяц int n = 0; // количество дней (прочитанных строк) float sum = 0; // сумма температур float sred; // среднее значение AnsiString buf; /* каждая строка файла имеет вид: ДД.ММ.ГГГГ Т где: ДД.ММ.ГГГГ - дата; Т - температура */ do { ls = GetString(h,&st); // дата if ( ls != 0) { nMonth = MonthOf (StrToDate(st)) - 1; // месяц buf = st; ls = GetString(h,&st); // температура temp = StrToFloat(st); if ( nMonth == ComboBox1->ItemIndex ) { n++; sum = sum + temp; buf = buf + " " + st; Memo1->Lines->Add(buf); } } } while ( ls != 0); FileClose(h); if ( n != 0 ) { sred = sum / n; Label1->Caption = "Среднее значение: " + FloatToStrF(sred,ffGeneral,3,2); } else Label1->Caption = "В БД нет информации о температуре за " + ComboBox1->Text; }
BOOL __asm __saveds L_GetFileVersion( register __a0 char *name, register __d0 short *version, register __d1 short *revision, register __a1 struct DateStamp *date, register __a2 APTR progress) { char *buffer; BPTR file; short size,pos; char match_string[6]; short match=0; BOOL ok=0; struct TagItem tags[2]; unsigned short word_read=0,wordpos=0; unsigned short verflags=0; unsigned long wordcount=0,headerstart=0,matchpos=0,headerlength=0,limit; // Initialise things *version=0; *revision=0; if (date) date->ds_Days=0; // Allocate buffer if (!(buffer=AllocVec(4096,0))) return 0; // Open file if (!(file=Open(name,MODE_OLDFILE))) { FreeVec(buffer); return 0; } // Initialise tags tags[0].ti_Tag=PW_FileSize; tags[1].ti_Tag=TAG_END; // Got progress? if (progress) { struct FileInfoBlock __aligned info; // Get file info if (ExamineFH(file,&info)) { // Set file size tags[0].ti_Data=info.fib_Size; } else tags[0].ti_Data=0; // Set bar L_SetProgressWindow(progress,tags); // No file size? if (!tags[0].ti_Data) progress=0; } // Set tag to update size tags[0].ti_Tag=PW_FileDone; tags[0].ti_Data=0; // Build match string match_string[0]='$'; match_string[1]='V'; match_string[2]='E'; match_string[3]='R'; match_string[4]=':'; // Wordcount limit limit=256; // Read first 4k while ((size=Read(file,buffer,4096))>-1) { short extra=0; // End of file? if (size==0) { // Did we find matchword? if (verflags&VERF_MATCH) { // Seek to match position Seek(file,matchpos,OFFSET_BEGINNING); // Read into buffer size=Read(file,buffer,512); // Signal a match match=5; verflags&=~VERF_MATCH; } // Failed to find anything else break; } // Got progress? if (progress) { // Check for abort if (L_CheckProgressAbort(progress)) break; // Increment total, update display tags[0].ti_Data+=size; L_SetProgressWindow(progress,tags); } // Leave last 32 bytes if (size>4064) { extra=size-4064; size=4064; } // Go through buffer for (pos=0;pos<size && match<5;pos++) { // Add to word if (wordpos==0) { // High byte word_read=((unsigned char)buffer[pos])<<8; wordpos=1; } // Low byte else if (!(verflags&VERF_FAIL)) { // This completes the word word_read|=(unsigned char)buffer[pos]; wordpos=0; // Increment count ++wordcount; // Executable? if (word_read==VER_EXECUTABLE && wordcount==2) { verflags|=VERF_GOT_EXE; } // Correct header? else if (verflags&VERF_GOT_EXE && (word_read==VER_HEADER_CODE || word_read==VER_HEADER_DATA) && !headerstart) { // Set flag verflags|=VERF_GOT_HEADER; headerstart=((wordcount-1)<<1)+6; // Get length of the header CopyMem((char *)(buffer+pos+1),(char *)&headerlength,sizeof(headerlength)); // Convert length to words ++headerlength; headerlength<<=1; } // Match word? else if (verflags&VERF_GOT_EXE && verflags&VERF_GOT_HEADER && word_read==VER_MATCHWORD) { struct Resident res; // Get resident structure CopyMem((char *)(buffer+pos-1),(char *)&res,sizeof(struct Resident)); // Get position of ID string from hunk offset matchpos=((long)res.rt_IdString)+headerstart-1; // Set match flag verflags|=VERF_MATCH|VERF_FAIL; } // Got a header? else if (headerstart) { // Decrement a word from the headerlength if ((--headerlength)<=0) { // End of the header verflags&=~VERF_GOT_HEADER; headerstart=0; // New word count limit limit=wordcount+256; } } // Have we gone too far? if (wordcount>limit && !(verflags&VERF_GOT_HEADER)) verflags|=VERF_FAIL; } // Check for match if (buffer[pos]==match_string[match]) { // Increment match count ++match; } // Reset match count else match=0; } // Got a match? if (match==5) { short day,month,year; char datebuf[20]; struct DateTime dt; // Got progress? if (progress) { // Show full bar tags[0].ti_Data=(ULONG)-1; L_SetProgressWindow(progress,tags); } // Bump position ++pos; // On a space? if (buffer[pos]==' ') { // Find first non-space while (pos<size && buffer[pos]==' ') ++pos; if (pos>=size) break; } // Find first space while (pos<size && buffer[pos]!=' ' && buffer[pos]!='\n') ++pos; if (pos>=size || buffer[pos]=='\n') break; // Find first number while (pos<size && (buffer[pos]<'0' || buffer[pos]>'9')) ++pos; if (pos>=size) break; // Get version number *version=atoi(buffer+pos); // Find decimal point while (pos<size && buffer[pos]!='.' && buffer[pos]!=' ') ++pos; if (pos>=size-1) break; // Check next number ++pos; if (buffer[pos]>='0' && buffer[pos]<='9') *revision=atoi(buffer+pos); // We're ok at this point ok=1; // Want date? if (!date) break; // Find parentheses for date while (pos<size && buffer[pos]!='(') ++pos; if (pos>=size) break; // Get day ++pos; day=atoi(buffer+pos); if (day<1 || day>31) break; // Skip a segment if ((pos=version_skip(buffer,pos,size))==-1) break; // Get month month=atoi(buffer+pos); if (month<1 || month>12) { char buf[4]; // Maybe this is a character month buf[0]=buffer[pos]; buf[1]=buffer[pos+1]; buf[2]=buffer[pos+2]; buf[3]=0; // See if it matches for (month=0;month<12;month++) if (stricmp(month_str[month],buf)==0) break; // Did it match? if (month<12) ++month; else break; } // Skip a segment if ((pos=version_skip(buffer,pos,size))==-1) break; // Get year year=atoi(buffer+pos); // Check year if (year>1900 && year<2000) year-=1900; if (year<78) break; while (year>100) year-=100; // Build string lsprintf(datebuf,"%ld-%ld-%ld",month,day,year); // Convert to datestamp dt.dat_Format=FORMAT_USA; dt.dat_Flags=0; dt.dat_StrDay=0; dt.dat_StrDate=datebuf; dt.dat_StrTime="00:00:00"; StrToDate(&dt); // Copy datestamp *date=dt.dat_Stamp; break; } // Any extra? if (extra>0) { // Seek back for extra Seek(file,-extra,OFFSET_CURRENT); } } // Close file, free buffer Close(file); FreeVec(buffer); return ok; }
void __fastcall TFormDataForDiplom::FormCreate(TObject *Sender) { DateTimePickerDateVidachi->Date = StrToDate(opts.DateDiplom); DateTimePickerDatePrisQualif->Date = StrToDate(opts.DateQualif); }
int main(void) { struct AnchorPath aPath; struct RDArgs *rda; IPTR args[5] = { NULL, NULL, NULL, NULL, FALSE }; struct DateTime dt; LONG error = 0; BPTR oldCurDir; LONG retval = RETURN_OK; BOOL timeError = FALSE; /* Error in time/date specification? */ rda = ReadArgs("FILE/A,WEEKDAY,DATE,TIME,ALL/S", args, NULL); if(rda == NULL) { PrintFault(IoErr(), "SetDate"); return RETURN_FAIL; } /* Use the current time as default (if no DATE, TIME or WEEKDAY is defined) */ DateStamp(&dt.dat_Stamp); dt.dat_Flags = DTF_FUTURE; dt.dat_Format = FORMAT_DOS; dt.dat_StrDate = (TEXT *)args[ARG_DATE]; dt.dat_StrTime = (TEXT *)args[ARG_TIME]; /* Change the defaults according to the user's specifications */ if(StrToDate(&dt)) { dt.dat_StrDate = (TEXT *)args[ARG_WEEKDAY]; if(!StrToDate(&dt)) timeError = TRUE; } else timeError = TRUE; if(timeError) { PutStr("SetDate: Illegal DATE or TIME string\n"); return RETURN_FAIL; } aPath.ap_Flags = (BOOL)args[ARG_ALL] ? APF_DOWILD : 0; aPath.ap_BreakBits = SIGBREAKF_CTRL_C; aPath.ap_Strlen = 0; /* Save the current dir */ oldCurDir = CurrentDir(NULL); CurrentDir(oldCurDir); error = MatchFirst((STRPTR)args[ARG_FILE], &aPath); while(error == 0) { CurrentDir(aPath.ap_Current->an_Lock); // VPrintf("%s", (IPTR *)&aPath.ap_Info.fib_FileName); SetFileDate(aPath.ap_Info.fib_FileName, &dt.dat_Stamp); error = MatchNext(&aPath); } MatchEnd(&aPath); /* Restore the current dir */ CurrentDir(oldCurDir); FreeArgs(rda); if(error != ERROR_NO_MORE_ENTRIES) { if(error == ERROR_BREAK) retval = RETURN_WARN; else retval = RETURN_FAIL; PrintFault(IoErr(), "SetDate"); } return retval; }
//when the calendar choice is changed, change variables accordingly void __fastcall TForm3::calendarChange(TObject *Sender) { pureDate = calendar->Date; dateChosen = StrToDate(pureDate).FormatString(L"yyyy-mm-dd"); }
int Persona::calcularEdad(String fecha) { int f=StrToDate(fecha); int fa=Date().CurrentDate(); return (fa-f)/365.25; }