Код C ++ 6.0 игнорируется после компиляции (код калькулятора даты и времени) - PullRequest
0 голосов
/ 01 ноября 2019

Этот проект, над которым я работаю, вынуждает меня использовать Visual C ++ - 6.0, и каждый раз, когда я компилирую этот код, он вызывает ошибки не только в этом сегменте кода, но и в других местах, не связанных с этой частью.

Прямо сейчас я пытаюсь рассчитать дату истечения срока, которая составляет 15 месяцев с даты, которая будет предоставлена.

Я пытался выяснить, является ли это распространенной проблемой после обновления Windows. Я знаю, что 6.0 не поддерживается и постепенно прекращается, но это «требование» для этой программы. Я поклялся, что он работал 2 месяца назад, и с того момента на моем устройстве с Windows 10 было развернуто около 30 патчей.

В настоящее время в этом фрагменте кода дата, которая передается в код, переносится без изменений. Например: ноябрь-01-2019 должен стать февралем-01-2021

    void CalculateDates(int numIndex)
{
        int tDay = 0, tMonth = 0, tYear = 0, exp_Months = 15;
        char sTemp1[4], sTemp2[4], sTemp3[4], sTemp4[4], sDay[4], sYear[4], *p;

        p = Database[numIndexCount].sIdentifier;
        strncpy(Database[numIndexCount].sPreparedBy, Database[numIndexCount].sIdentifier, 3);
        Database[numIndexCount].sPreparedBy[3] = 0;
        strncpy(sTemp1, p + 3, 2);
        sTemp1[2] = 0;
        strncpy(sTemp2, p + 5, 2);
        sTemp2[2] = 0;
        strncpy(sTemp3, p + 7, 2);
        sTemp3[2] = 0;

        strcpy(sTemp4, "20");
        SetDateMonth(sTemp1);

        sprintf(Database[numIndex].sPreparedDate, "%s-%s-%s%s", sTemp2, sMonth1, sTemp4, sTemp3);

        tDay = atoi(sTemp2);
        tMonth = atoi(sTemp1);
        tYear = atoi(sTemp3);

        if (tMonth <= 9) {
                if (tMonth == 9) {
                        tMonth = 12;
                        tYear++;

                //      cout << "Is the month printing right? ";
                //      cout<<tMonth;
                //      cout << "\n";

                }
                else {

                        tMonth = (tMonth + exp_Months) % 12;
                        tYear++;

                        //cout << "Is the month printing right? ";
                        //cout<<tMonth;
                        //cout << "\n";

                }

        }




        if (tMonth == 4 || tMonth == 6 || tMonth == 9 || tMonth == 11) {
        //              cout << "This is reached";
        //              cout << "\n";
        //              cout << "The day value is: ";
        //              cout << tDay;
        //              cout << "\n";
                if (tDay == 31)
                {
                        tDay = 30;
                }
        }

        if (tDay >= 29 && tMonth == 2 && tYear % 4 == 0) {
                if (tYear % 100 != 0) {
                        tDay = 29;
                }
                else if (tYear % 100 == 0 && tYear % 400 == 0) {
                        tDay = 29;
                }
        }


        else if (tYear % 4 != 0 && tMonth == 2) {
                tDay = 28;
        }
                sprintf(sTemp1, "%i", tMonth);
                if (tDay < 10) sprintf(sDay, "0%i", tDay);
                else sprintf(sDay, "%i", tDay);
                if (tYear < 10) sprintf(sYear, "0%i", tYear);
                else sprintf(sYear, "%i", tYear);


                SetDateMonth(sTemp1);

                sprintf(Database[numIndex].sUseByDate, "%s-%s-%s%s", sDay, sMonth1, sTemp4, sYear);
                sprintf(sUseByDate, "%s-%s-%s%s", sDay, sMonth1, sTemp4, sYear);


        }

Конечными результатами для вышеупомянутого на сегодня были ноябрь-01-19, но должны были быть февраль-01-19

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...