Код C++ 6.0 игнорируется после компиляции (код калькулятора даты и времени)

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

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

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

В настоящее время в этом фрагменте кода дата, передаваемая в код, переносится без изменений. Например: Nov-01-2019 должно стать Feb-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 февраля.

0 ответов

Другие вопросы по тегам